我需要测试自定义单元格标签的值是否包含在数组中。为了实现这一点,我创建了一个执行测试并返回布尔值的函数。我的问题是每次细胞进入屏幕时,测试都会再次进行。 我应该在哪里进行测试,这样才能完成一次?
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cellIdentifier = "Cell"
var cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as CustomTableViewCell
var name:String = Array(self.contactList[indexPath.row].keys)[0]
var phones:String = self.contactList[indexPath.row]["\(name)"]!
cell.nameLabel.text = name
cell.phoneLabel.text = phones
cell.inviteButton.tag = indexPath.row
var (matched, id) = self.isRegistered(phones)
if(matched){
cell.phoneLabel.text = "TRUE"
cell.idUser = "\(id)"
}
return cell
}
我需要能够修改单元格以响应此测试。谢谢你的帮助!
答案 0 :(得分:1)
每次出现单元格时都会调用您的测试,因为您将测试调用置于cellForRowAtIndexPath:
内(如果您说需要根据测试结果更改单元格的标签值,我看不到任何其他选择)
您可以尝试使用UITableViewDelegate方法
optional func tableView(_ tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath)
每次需要呈现单元格时都会调用此方法。
第二种方式有点棘手而且我不推荐它,您可以创建一个pool
(数组)的UITableViewCell
并维护(调用测试和更改值)来自该池您认为最好的时间(例如滚动tableView
时)