我有一个基于视图的NSOutlineView,并且在类中有一个选择更改事件:
- (void)outlineViewSelectionDidChange:(NSNotification *)notification
{
NSLog(@"Selected Row inside:%ld",[self selectedRow]);
}
这是我创建NSOutlineView的方式:
ovc = [[OutlineViewController alloc] init];
[myOutlineView setDelegate:(id<NSOutlineViewDelegate>)ovc];
[myOutlineView setDataSource:(id<NSOutlineViewDataSource>)ovc];
MyOutlineView在IB中创建。
每次我单击一行时,都会触发该事件,但是结果始终为-1。
NSLog(@"Item 0:%@",[self viewAtColumn:1 row:0 makeIfNecessary:YES]);
始终返回NULL。
有什么我应该做的具体事情吗?谢谢。
===编辑===
我已经发布了显示该问题的简化代码:http://www.petits-suisses.ch/OutlineView.zip
最佳答案
而不是检查self对象的selectedRow,它只是在AppController中初始化的对象,它是错误的实例。您需要检查通知对象,如下所示。
NSLog(@"Selected Row:%ld",[[notification object] selectedRow]);
此外,clickedRow在目标的操作实施中也很有意义。因此,如果在Action或DoubleAction方法中进行检查,则clickedRow会提供正确的值。