UITableViewCellAccessoryCheckmark点击单元格
问题描述:
我有一个UITableView,每个单元格都有一个UITableViewCellAccessoryCheckmark。用户可以根据自己的喜好检查和取消选中单元格。用户可以检查/选择tableview中的多个单元格。选中/选中的单元格可以取消选中,并根据用户偏好重新检查。这是我尝试过的。UITableViewCellAccessoryCheckmark点击单元格
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if([[NSIndexPath indexPathWithIndex:indexPath.row] isEqual:self.selectedIndex]){
if(cell.accessoryType == UITableViewCellAccessoryCheckmark)
cell.accessoryType = UITableViewCellAccessoryNone;
else
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
else{
if(cell.accessoryType == UITableViewCellAccessoryCheckmark){
}
else{
cell.accessoryType = UITableViewCellAccessoryNone;}
}
}
在这种情况下,我没有得到正确的逻辑。以上是最接近的我来了,但同样,第一次tableview加载每个单元格被检查。但其余的功能都可以。
所以我想要的是,最初当视图加载时,我必须在UITableView
未选中所有单元格。然后根据细胞的选择,核对标记必须在每个细胞中更新。酒店selectedIndex
是NSIndexPath
类型,每次更新didSelectRowAtIndexpath
。
答
永远不要根据单元格中的任何数据检查您选择的状态,始终拥有自己的数据模型或数组以维护选定的状态。
呃,为什么? O_O
那么通常UITableViewCell
被再次使用时,电池出现在索引1可以用相同的状态,在指数8或7或9或任何指数再次出现(我们不需要知道通常)当您使用dequeueReusableCell:
如果您想拥有CheckBox
样式(多选),您需要有一个数组来映射选定的索引。
如果您想拥有RadioButton
风格(一次只能选择一个),则需要具有引用所选索引的单个变量。
在从您的代码你的具体情况。这可以解决这样的:
if([[NSIndexPath indexPathWithIndex:indexPath.row] isEqual:self.selectedIndex]){
cell.accessoryType = UITableViewCellAccessoryCheckmark;
else{
cell.accessoryType = UITableViewCellAccessoryNone;}
}
我想有一个复选框样式选择。您提供的代码示例是radioButton种类的选择 – 2013-04-07 16:26:20
实际上,我从您的代码中复制了该类型。如果你想拥有CheckBox风格,你需要一个数组来映射选定的索引。你可以看到我以前的答案有这种实现。 – 2013-04-07 16:37:37