UITableView IndexPathForCell返回错误

时间:2011-07-07 18:15:06

标签: cocoa-touch uitableview

在我的UITableView中,每个单元格都有一个自定义UISwitch。我将交换机信息保存在NSMutableArray中,目的是在用户更改为其他表时使用它来保存状态信息。

为此,我需要获取单元格的行信息,以便我可以在NSMutableArray中翻转相应的“YES”或“NO”。我试图这样做:

UICustomSwitch *temp = (UICustomSwitch *)sender;
UITableViewCell *cell =  (UITableViewCell *)temp.superview;
NSIndexPath *path = [self.tableView indexPathForCell:cell];

此后我有

NSLog(@"Path was: %@", path);

现在,当我输出路径时,我会得到类似的内容:

Path was: <NSIndexPath 0x4b25590> 2 indexes [0, 1]

但是,当我将NSlog更改为path.row时,程序崩溃了。我没有找到原因,我也在其他地方使用path.row。任何人都可以帮忙解释为什么会这样吗?

编辑:

例如,当我这样做时:

 NSLog(@"Path was: %d", path.row);

它崩溃了。

3 个答案:

答案 0 :(得分:2)

NSIndexPath.row返回纯无符号整数(NSUInteger),而不是对象,因此您需要将NSLog格式说明符更改为%@到{{ 1}}。通过使用%u,它使用整数作为内存地址,这很可能指向一些根本不是对象的内存。

答案 1 :(得分:0)

你有没有尝试过:

NSLog(@"Path was: %@", path.row);path.row的类型为NSUInteger。您可以使用'%d'代替'%@'。

答案 2 :(得分:0)

嗯......我不确定这是一个答案,但我最终重新启动计算机并重新开始工作。所以...是的,我真的不知道世界上到底发生了什么。