我有一个带有NSTableColumn的NSTableView,其中包含一个NSButtonCell(一个复选框),每次添加一行时都会生成一个新的NSButtonCell实例,我在IB中配置了该实例。但是,我很好奇为什么在下面的代码块中第二个NSLog返回0。
NSLog(@"%ld", (long)[[self.tableView preparedCellAtColumn:0 row:0]state]);
[[self.tableView preparedCellAtColumn:0 row:0]setState:1];
NSLog(@"%ld", (long)[[self.tableView preparedCellAtColumn:0 row:0]state]);
它返回0意味着我我向NSButtonCell的实例发送消息,对吗?那么为什么没有setState:更改第二个NSLog的返回值?
答案 0 :(得分:0)
如果它正在接收nil
,它也会打印0
,我建议您尝试这个
NSLog(@"cell:%@", [self.tableView preparedCellAtColumn:0 row:0])
确保您实际从表视图中获取有效的单元格对象。
你从哪里调用该代码?表已经显示后?在初始化期间?
如果前者那么应该有一个可用的单元格,如果是后者那么它可能尚未从池中创建或重新分配。
尝试上面的NSLog
命令,确保您实际上从表格视图中获取了一个单元格而不是nil
。