5

NSOutlineViewをセルベースからビューベースに変更した後、ファイルシステムツリーのアイコンとタイトルは表示されません。ここに私のコード:

- (void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item {
    if ([[tableColumn identifier] isEqualToString:@"name"])
        return [(ImageAndTextCell *)cell setTextFieldImage:[item icon]];
}

- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item {
    return [((ConstructorFSEntity *)item) title];
}

- (NSView *)outlineView:(NSOutlineView *)outlineView viewForTableColumn:(NSTableColumn *)tableColumn item:(id)item {
    if ([item isKindOfClass:[FSEntity class]]) {
        return [outlineView makeViewWithIdentifier:@"HeaderCell" owner:self];
    } else {
        return [outlineView makeViewWithIdentifier:@"DataCell" owner:self];
    }
}

そしてもう1つ質問があります。列挙されたアイテム(ファイルシステムのアイテムの配列)をセル「DataCell」に配置し、「HeaderCell」を親フォルダー(グループ)として宣言し、タイトル(たとえば、@「ルートフォルダー」)とパスを割り当てる方法クラス。以前のビューベースの方法では、列挙されたアイテムが「HeaderCell」または「DataCell」にのみ表示され、「HeaderCell」に値を割り当てようとすると、アプリがクラッシュするためです。これを手伝ってくれませんか。

4

1 に答える 1

4

アイテムのタイトルとアイコンを表示するには、この方法を変更するだけです。

- (NSView *)outlineView:(NSOutlineView *)outlineView viewForTableColumn:(NSTableColumn *)tableColumn item:(id)item

次のように:

- (NSView *)outlineView:(NSOutlineView *)outlineView viewForTableColumn:(NSTableColumn *)tableColumn item:(id)item {
    if (![item isKindOfClass:[FSEntity class]]) {
        return [outlineView makeViewWithIdentifier:@"HeaderCell" owner:self];
    } else {
        NSTableCellView *cellView = [outlineView makeViewWithIdentifier:@"DataCell" owner:self];
        [(ImageAndTextCell *)cellView.textField.cell setTextFieldImage:[item icon]];
        cellView.textField.stringValue = [((FSEntity *)item) title];
        return cellView;
    }
}
于 2012-08-26T21:25:14.360 に答える