0

我正在使用一个自定义UITableViewCell子类,称为MessageCell.

我像这样初始化单元格:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {


    MessageCell *cell = [tableView dequeueReusableCellWithIdentifier:@"messageCell"];

    // more code

   return cell;

}

在每个自定义单元格中,我都有一个用于标记此单元格的复选框。当一个单元格被标记时,它被添加到一个数组中,反之亦然。

虽然这在数据方面有效,但 UI 并没有按应有的方式反映它。发生的情况是,除了标记的单元格之外,其他单元格也被标记了。

我假设这种行为源于单元格的可重用性,即当我将一个单元格标记为选中时,它具有一个与该屏幕位置中所有未来单元格的共同指针。

出于这个原因,我想使用“普通”不可重复使用的单元格。

所以我尝试了:

  MessageCell *cell = [[MessageCell alloc] init];

或者:

  MessageCell *cell = [[MessageCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];

但是它们都导致显示空单元格。

4

1 回答 1

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:在需要从中制作单元格时使用吗?

于 2013-09-06T08:09:45.760 回答