我的Cocoa应用程序有一个NSOutlineVew,其中填充了从文本文件中读取的数据,它基本上是静态的,并且在开始时只加载一次。
在10.10之前,NSOutlineView正常工作,用户可以将项目从拖放到NSTableView。但是,如果我们在10.10中运行应用程序,则NSOutlineView不会填充数据,基本上只是空的。控制台日志中没有错误消息。基本上,我们发现以下代码不会在10.10中执行。
#pragma OutlineView for CmdSet
// Data Source methods
- (NSInteger)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item {
return (item == nil) ? [cmdTree count] : [item numberOfChildren];
}
- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item {
return (item == nil) ? YES : [item isExpandable];
}
- (id)outlineView:(NSOutlineView *)outlineView child:(NSInteger)index ofItem:(id)item {
return (item == nil) ? [cmdTree objectAtIndex:index] : [[item children] objectAtIndex:index];
}
- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item {
return [item nodeName];
}
我的应用基本上是用AppController编写的,我附上代码和截图供您参考。
@interface AppController : NSObject {
...
IBOutlet NSOutlineView *outlineViewCmdSet;
}
任何人都可以指出我正确的方向如何解决这个问题,以便能够在10.10和之前的版本中运行?我们的客户使用不同的Mac OS。能够支持所有操作系统是件好事。