2012-05-09 14 views

答えて

2

はい、可能です。アップルのドキュメントから

機能するためには、プログラムで実装ビューベーステーブルには、以下を実装する必要があります。

...

- (NSViewの*)のtableView: viewForTableColumn:row:NSTableViewDelegateプロトコルによって定義されるメソッド。このメソッドは、特定の列と行のセルとして表示するビューと、そのセルに適切なデータを取り込みます。

このようにして、適切にデータを入力した後でNSView(または任意のサブクラス)クラスのオブジェクトを取得して戻すことができます。あなたがこの物体をどこから得るかは、興味がありません。私が知る限り、次のようにすることが可能です:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
{ 
    // Assume you have a XIB called View.xib 
    [NSBundle loadNibNamed:@"View" owner:self]; 

    // And you have an IBOutlet to your NSTableView (that's view based) called tView 
    [tView reloadData]; 
} 

- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView { 
    return 20; 
} 

- (NSView *)tableView:(NSTableView *)tableView 
    viewForTableColumn:(NSTableColumn *)tableColumn 
        row:(NSInteger)row { 


    // Assume your class has an IBOutlet called contentOfTableView, 
    // your class is File's Owner of the View.xib and you connected the outlet. 
    return contentOfTableView; 

} 

希望しています。私はちょうど心にラフアイデアを持って一緒にそれを投げた。がんばろう!

+0

ありがとうございました!ですから、contentOfTableViewはNSViewですか?ビューはどのNIBに読み込まれるのかをどのように知っていますか? – bijan

+1

コントローラクラスをView.xib内のファイル所有者に設定し、loadNibNamedを使用すると、nib自体がロードされます。自己を所有者(NSBundleのメソッドを比較する)に指定することで、Cocoaに、プレースホルダーをコントローラオブジェクトに置き換えるよう指示します。 View.xib内で、IBOutlet contentOfTableViewをファイル所有者に接続しました。これは、あなたのxibがメモリにロードされた後のあなたのコントローラです。したがって、あなたは同じxib内の通常のコンセントとして宣言したかのように、このコンセントを完全に使用することができます。 – pbx

関連する問題