2012-02-18 20 views
4

でここで私は、データとビューベースNSTableViewを投入するために使用しているコードの一部です:ロードNSNib注文トップレベルのオブジェクト順不同

- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row { 
    MyCustomCellView *view = (MyCustomCellView *)[tableView makeViewWithIdentifier:@"MyCustomCellView" owner:self]; 
    if (!view) { 
     NSNib *cellNib = [[NSNib alloc] initWithNibNamed:@"MyCustomCellView" bundle:[NSBundle mainBundle]]; 
     NSArray *array = nil; 
     if ([cellNib instantiateNibWithOwner:self topLevelObjects:&array]) { 
      DLog(@"%@", array); 
      view = [array objectAtIndex:0]; 
      [view setIdentifier:@"MyCustomCellView"]; 
     } 
     [cellNib release]; 
    } 

    MyObject *object = [_objects objectAtIndex:row]; 

    [[view titleTextField] setStringValue:object.title]; 

    return view; 
} 

DLog文のプリントアレイを二つの連続デリゲートのために、以下のよう呼び出す:これは2行分の出力が外に

(
    "<MyCustomCellView: 0x7fb2abe81f70>", 
    "<NSApplication: 0x7fb2ab80cbf0>" 
) 
(
    "<NSApplication: 0x7fb2ab80cbf0>", 
    "<MyCustomCellView: 0x7fb2abb2c760>" 
) 

で数百ので、私ランダムにどちらかの私の見解は、正しく表示またはviewオブジェクトに対してsetIdentifier:を呼び出している間、私はunrecognized selectorエラーをゲットviewobjectAtIndex:0の場合、実際にはロードされたペン先のトップレベルオブジェクトNSApplicationのインスタンスです。

これはnibローディングメカニズムのバグですか、このコードで何か問題がありますか?

+0

@Monolo? – Eimantas

+0

なぜこのようなペン先をロードしようとしていますか?なぜ 'NSViewController'を使わないのですか?さらに良い点は、テーブルコントローラがあるペン先にセルビューを追加し、それにアクセスするためにアウトレットを使用するだけです。 –

+0

これはバグか機能かに関するニュースはありますか? – hanno

答えて

5

このスレッドは少し古いですが、それは価値がある何のために:ドキュメントはtopLevelObjects:パラメータに戻って渡された配列の順序付けなどの特定のないよう

それは、これはバグであるかどうかは明らかではありません。しかし、このスニペットは私のために働いています。クラスはあなたが興味ない

NSArray *arrayOfViews; 
BOOL wasLoaded = [[NSBundle mainBundle] loadNibNamed:xibName owner:self topLevelObjects:&arrayOfViews]; 
NSUInteger viewIndex = [arrayOfViews indexOfObjectPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) { 
    return [obj isKindOfClass:[MyCustomView class]]; 
}]; 

self = [arrayOfViews objectAtIndex:viewIndex]; 
+0

...もちろん、健全性のためにwasLoadedとviewIndexをチェックしてください –

関連する問題