我正在使用名为UITableViewCell
的自定义MessageCell
子类。
我像这样初始化单元格:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
MessageCell *cell = [tableView dequeueReusableCellWithIdentifier:@"messageCell"];
// more code
return cell;
}
在每个自定义单元格中,我都有一个用于标记此单元格的复选框。当一个单元被标记时,它被添加到一个数组中,反之亦然。
虽然这在数据方面起作用,但UI并没有像现在这样反映它。发生的事情是,除了标记的细胞外,还标记了其他细胞。
我认为这种行为源于单元格的可重用性,即当我将单元格标记为已选中时,它具有一个公共指针,指向此屏幕位置中的所有未来单元格。
出于这个原因,我想使用“正常”不可重复使用的细胞。
所以我试过了:
MessageCell *cell = [[MessageCell alloc] init];
OR:
MessageCell *cell = [[MessageCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
但是他们都导致显示空单元格。
答案 0 :(得分:1)
您仍然希望重复使用单元格!只需检查您的数据并将复选框设置为在cellForRowAtIndexPath中选中或取消选中:
MessageCell *cell = [tableView dequeueReusableCellWithIdentifier: @"messageCell"];
if (condition cell should be checked) //set the cells checkbox to checked
else //set the cells checkbox to unchecked
或者某种方法。
PS重新阅读你的问题:
你真的需要引用阵列中的单元格吗?例如,如果你需要创建一个单元格,那么你不能存储indexPath并使用cellForRowAtIndexPath:
吗?