「SourceList」OutlineView を使用していますが、表示する「ヘッダー」および「データ」NSTableCellViews のコンテンツを取得できません。OutlineView の構造が機能し、私のアプリが実行され、http://i.stack.imgur.com/0E4D8.pngのように見えます。
これが私のコードです:
- (id)init {
self = [super init];
if (self) {
_masterFolder = [[NSMutableArray alloc] init];
MasterFolder *trueMaster = [[MasterFolder alloc] initMaster:@"Categories"];
[_masterFolder addObject:trueMaster];
[trueMaster addChild:[[MasterFolder alloc] initMaster:@"World"]];
[trueMaster addChild:[[MasterFolder alloc] initMaster:@"Sports"]];
[trueMaster addChild:[[MasterFolder alloc] initMaster:@"Local"]];
[trueMaster addChild:[[MasterFolder alloc] initMaster:@"Business"]];
[(MasterFolder *)[trueMaster.children objectAtIndex:0] addChild:[[MasterFolder alloc] initMaster:@"Middle East"]];
}
return self;
}
- (NSInteger)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item {
return !item ? [self.masterFolder count] : [[item children] count];
}
- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item {
return !item ? YES : [[item children] count] != 0;
}
- (id)outlineView:(NSOutlineView *)outlineView child:(NSInteger)index ofItem:(id)item {
return !item ? [self.masterFolder objectAtIndex:index] : [[item children] objectAtIndex:index];
}
- (NSView *)outlineView:(NSOutlineView *)outlineView viewForTableColumn:(NSTableColumn *)tableColumn item:(id)item {
if (![item isKindOfClass:[MasterFolder class]]) {
return [outlineView makeViewWithIdentifier:@"HeaderCell" owner:self];
} else {
NSTableCellView *cellView = [outlineView makeViewWithIdentifier:@"DataCell" owner:self];
cellView.textField.stringValue = [((MasterFolder *)item) name];
return cellView;
}
}
私はそれがこの機能の問題であることを知っています:
- (NSView *)outlineView:(NSOutlineView *)outlineView viewForTableColumn:(NSTableColumn *)tableColumn item:(id)item {
しかし、それを機能させるために何を変更すればよいかわかりません。私はすでに Stack Overflow で同様の投稿を多数見てきましたが、提供されたソリューションを機能させることができませんでした。