2017-01-14 5 views
0

ビューベースのビューごとにビューを構築しようとすると、makeViewWithIdentifier:owner:メソッドは常にnilを返します。テーブルはIBでビルドされており、すべてが適切にリンクされているようですが、デリゲートメソッドはすべて私が期待するように呼び出されます。 makeViewWithIdentifierメソッドについてアップルのドキュメントを調べると、メソッドがnilを返す理由が見つかりません。コードからの抜粋:MakeViewWithIdentifier:owner:returns nil

- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row { 
    if ([tableColumn.identifier isEqualToString:@"foo"]) { 
     NSTableCellView *view = [tableView makeViewWithIdentifier:@"id" owner:self]; // Is always nil.. 
     view.textField.stringValue = [myArray objectAtIndex: row]; 

     return view; 
    } 
    return nil; 
} 

なぜviewがnilだろうか?

+0

私はビューのIDに適合していない "ID" @疑い。 – shallowThought

+0

列識別子と同じ識別子を使用しない理由は何ですか? – vadian

+0

@vadianあなたは私を救っただけですが、なぜ私は本当に理解できません。ビュー識別子argを固定した列と同じに変更する。ビュー識別子は、特定のビューまたは何かを検索するためにのみ使用されていたと思った。まあ、少なくとも何か新しいことを学んだ! –

答えて

0

あなたはXIBとコードで同じ識別子を使用する必要があります。

static NSString * const ItemMainTableCellViewIdentifier = @"ItemMainTableCellViewIdentifier"; 

nib = [[NSNib alloc] initWithNibNamed:@"ItemMainTableCellView" bundle:nil]; 
[self.table registerNib:nib forIdentifier:ItemMainTableCellViewIdentifier]; 

ItemMainTableCellView *cellView = [tableView makeViewWithIdentifier:ItemMainTableCellViewIdentifier owner:self]; 

enter image description here