我有一个NSTableView,其中有一个带有NSButtonCell (复选框)的NSTableColumn,它在每次添加一行时生成一个新的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的返回值呢?
发布于 2014-01-26 07:46:15
如果它正在接收nil,它也会打印0,我建议您尝试一下
NSLog(@"cell:%@", [self.tableView preparedCellAtColumn:0 row:0])以确保实际从表视图中获取有效的单元格对象。
你从哪里打电话来的?在表已经显示之后?在初始化过程中?
如果前者是可用的,那么应该有一个单元格,如果后者,则可能还没有从池中创建或重新分配。
尝试上面的NSLog命令,以确保您实际上正在从表视图中获取一个单元格,而不是nil。
https://stackoverflow.com/questions/21358498
复制相似问题