我做了一个UITableViewCell
,我在该表中有20行,其中屏幕上一次有5行。
我在didSelect委托方法中设置了附件视图检查标记,该方法正在选择哪一行。我担心的是假设选择第一行并检查其附件类型,现在如果我滚动表格,我们看到第六行也被检查。我知道细胞正在重复使用,而不是再次创造自己。
答案 0 :(得分:1)
该模型应该能够处理哪个单元格被检查,哪个单元格不被检查。为了简化问题,您可以保留一个应该检查NSIndexPath
的数组。如果当时只能检查一个,那么NSIndexPath
类型的ivar就足够了。
- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([[aTableView cellForRowAtIndexPath:indexPath] accessoryType] == UITableViewCellAccessoryCheckmark)
{
// Ok this one is selected, so we will remove it from the Reference Array.
}
else
{
// Ok this one doesn't has a checkMark
// First add the checkmark
[[aTableView cellForRowAtIndexPath:indexPath] setAccessoryType:UITableViewCellAccessoryCheckmark];
// Add the NSIndexPath to the Array of references
}
}
答案 1 :(得分:-1)
在委托方法
中- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
NSString *cellId = [NSString stringWithFormat:@"cell%d",indexPath.row];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId ];
if (cell==nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1
reuseIdentifier:cellId ] autorelease];
}
}
将不同的单元格ID设置为不同的单元格行。