Cocoa App NSOutlineView未在Mac OS 10.10中填充

时间:2014-12-15 08:09:35

标签: objective-c macos cocoa nsoutlineview osx-yosemite

我的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。能够支持所有操作系统是件好事。

Interface Builder中的OutLine视图 OutLine View in Interface Builder

0 个答案:

没有答案