在UITableView Selected Row上切换布尔值

时间:2013-11-30 18:28:58

标签: ios uitableview boolean

我正在尝试在选择表格行时切换布尔值。当我的表行包含NSObjects(在不同的类中)时,此代码正常工作...我简化了我的代码,以便行只包含字符串而不是对象(剪切类),但现在布尔值不会切换,因为我的实例变量是一个字符串。这是原始的工作代码:

在XYZObject中声明:

@property BOOL checked;

表视图didSelectRowAtIndexPath:

XYZObject *tappedItem = [myArray objectAtIndex:indexPath.row];
tappedItem.checked = !tappedItem.checked;
NSString *addedItem = cell.textLabel.text;
if(!tappedItem.checked) {
    [newArray removeObject:addedItem];
} else {
    [newArray addObject:addedItem];
}

当我将XYZObject更改为NSString并将Bool属性移动到表视图时,我在“NSString *”类型的对象上找不到“已检查属性”。将NSString更改为NSObject会做同样的事情。如果我更改NSString到XYZMyTableViewController,它现在将编译但在运行时由于“无法识别的选择器发送到实例”而中断。

所以我的问题是,我可以在一个字符串数组上切换'checked'Bol值吗?

UPDATE /溶液

我能够通过完全消除Bool并使用:

来解决问题
if (cell.accessoryType == UITableViewCellAccessoryNone)
{
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
    [newArray addObject:addedItem];
}
else {
    cell.accessoryType = UITableViewCellAccessoryNone;
    [newArray removeObject:addedItem];
}

我并不是特别高兴,因为我有其他一些使用'checked'的方法,但我应该能够以同样的方式重写它们。我仍然想知道为什么我无法在表格单元格中的字符串上切换bool值。

0 个答案:

没有答案