我已尝试过本网站提供的每一个选项,但这些问题似乎都没有奏效。
如果我向下滚动,我会看到勾选标记。如果我向上滚动我的选择的定位是不一样的。
因为问题是相同的,我想再次打开这个问题作为一个新的开始。我是这样做的:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
myTableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
if (![selectedDX containsObject:myMutArray[indexPath.row]])
{
[selectedDX addObject:myMutArray[indexPath.row]];
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
}
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
myTableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
if ([selectedDX containsObject:myMutArray[indexPath.row]]) {
[selectedDX removeObject:myMutArray[indexPath.row]];
cell.accessoryType = UITableViewCellAccessoryNone;
}
}
我也在一个didSelectRowAtIndexPath方法中尝试了它,但结果是一样的。
答案 0 :(得分:3)
在cellForRowAtIndexPath
中返回单元格时,是否正确设置了附件类型?在我看来,只有当用户点击一个单元时才设置附件,但这还不够。
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
[...]
if ([selectedDX containsObject:myMutArray[indexPath.row]])
{
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
else
{
cell.accessoryType = UITableViewCellAccessoryNone;
}
[...]
}
在表格视图中滚动时,将重复使用您的单元格。因此,一个单元格可以重复用于多个项目。这意味着配件也可以重复使用。因此,当您滚动并且不从单元格中移除附件时,它仍将具有复选标记。
您还可以在自定义prepareForReuse
子类中的UITableViewCell
方法中重置附件
答案 1 :(得分:2)
在cellForRowAtIndexPath
if([selectedDX containsObject:allCodeLabel[indexPath.row]])
{
cell.accessoryType = UITableViewCellAccessoryType.Checkmark
}
else
{
cell.accessoryType = UITableViewCellAccessoryType.None
}
它对我有用。希望它有帮助:)
答案 2 :(得分:1)
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
WCategoriesTableViewCell* cell = [tableView
cellForRowAtIndexPath:indexPath];
if (cell.accessoryType == UITableViewCellAccessoryNone)
cell.accessoryType = UITableViewCellAccessoryCheckmark;
else
cell.accessoryType = UITableViewCellAccessoryNone;
}