如何检测哪个细胞添加徽章?

时间:2015-11-04 10:16:08

标签: ios swift uitableview core-data badge

当我收到消息时,我将未读消息的用户名和计数写入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)
}

但它会向所有用户添加我的徽章,而不是确切的用户。无论如何解决它?

2 个答案:

答案 0 :(得分:0)

将在tableview中填充的数组中的每个元素都应该包含user的一个标识符。在“cellForRow”中,您检查哪个用户是这个,并且您可以根据id从数据库中获取徽章。 / p>

答案 1 :(得分:0)

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