【问题标题】:How to detect to which cell add badge?如何检测向哪个单元格添加徽章?
【发布时间】:2015-11-04 10:16:08
【问题描述】:

当我收到一条消息时,我会将用户名和未读消息的计数写入 CoreData。并借助此功能:

func unreadMessagesCountBadge(cell: onlineUserCell, forCount count: Int)

我将我的徽章添加到单元格中。

但问题是,我不知道如何将此徽章添加到确切的用户。当我收到消息时,我会在日志中看到:

data: {
    count = 15;
    username = "my_user@domain.com";
}

那么,我怎样才能将我的徽章添加到确切的单元格?在我的手机上,我只有用户名和姓氏,而不是用户名。

当我尝试时:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> onlineUserCell {
    let cell:onlineUserCell = self.tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! onlineUserCell

    unreadMessagesCountBadge(cell, forCount: badgeValue)
}

但它会将我的徽章添加到所有用户,而不是确切的用户。知道我该如何解决它?

【问题讨论】:

    标签: ios swift uitableview core-data badge


    【解决方案1】:

    将在表格视图中填充的数组中的每个元素都应包含用户的一个标识符。所以在“cellForRow”中,您可以检查这是哪个用户,然后您可以根据 id 从数据库中获取您的徽章。

    【讨论】:

      【解决方案2】:

      当您调用该方法时,您根本不会检查当前填充的单元格是否与应该有徽章的单元格相同。所以它会在每个单元格上被调用。在cellForRowAtIndexPath 中,检查 cell.userName 是否等于数据的电子邮件(无论您将其保存在模型中的哪个位置)。如果是,请致电func unreadMessagesCountBadge(cell: onlineUserCell, forCount count: Int)。如果您在cellForRowAtIndexPath 中检查电子邮件,则无论如何都不需要此方法中的第一个参数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-21
        • 2020-11-03
        • 1970-01-01
        • 2019-08-31
        相关资源
        最近更新 更多