1

プログラムでNSTableViewをNSViewに追加するのに少し問題があります。このビューは、NSSplitViewの最初のビューです。ビューにNSButtonを追加しても問題ないので、ポインターは正しく設定されています。また、テーブルビューのデリゲートメソッドとデータソースメソッドは期待どおりに機能しています。インターフェイスビルダーを使用してテーブルビューをビューに追加すると、機能します。しかし、私はIBを使いたくありません。これをコードで実行できるようにしたいと思います。これが私が現在使用しているコードです。

-(void)awakeFromNib{


    tableData = [[NSMutableArray alloc]initWithObjects:@"March",@"April",@"May", nil];


    tableView = [[NSTableView alloc]initWithFrame:firstView.frame];



    [tableView setDataSource:self];
    [tableView setDelegate:self];



    [firstView addSubview:tableView];

    NSButton *j = [[NSButton alloc]initWithFrame:firstView.frame];
    [j setTitle:@"help"];

    [firstView addSubview:j];




}

NSButtonオブジェクトが画面に表示されますが、ボタンをコメントアウトするとテーブルビューが表示されません。私は何を間違っているのですか。助けてくれてありがとう。

4

2 に答える 2

5

ありがとう、あなたの助けから私はこれを理解することができました。IBは、テーブルビューの周囲にNSScrollviewを自動的に挿入し、列も挿入します。コードからこれを行うには、スクロールビューと列を割り当てる必要があります。他の誰かがこの問題に遭遇した場合、これが私が現在利用しているものです。

-(void)awakeFromNib{

    tableData = [[NSMutableArray alloc]initWithObjects:@"March",@"April",@"May", nil];

    NSScrollView * tableContainer = [[NSScrollView alloc] initWithFrame:firstView.bounds];

    //This allows the view to be resized by the view holding it 
    [tableContainer setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];

    tableView = [[NSTableView alloc] initWithFrame:tableContainer.frame];
    [tableView setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
    NSTableColumn *column =[[NSTableColumn alloc]initWithIdentifier:@"1"];
    [column.headerCell setTitle:@"Header Title"];


    [tableView addTableColumn:column];



    [tableView setDataSource:self];
    [tableView setDelegate:self];


    [tableContainer setDocumentView:tableView];

    [firstView addSubview:tableContainer];

    //You mentioned that ARC is turned off so You need to release these:
    [tableView release];
    [tableContainer release];
    [column release];


}

ご協力いただきありがとうございます。

于 2012-08-09T19:29:34.870 に答える
1

NSTableViewデフォルトではにありNSScrollViewます。だからあなたはこのようにそれを行うことができます:

tableData = [[NSMutableArray alloc] initWithObjects:@"March",@"April",@"May", nil];

NSScrollView * tableContainer = [[NSScrollView alloc] initWithFrame:firstView.frame];
tableView = [[NSTableView alloc] initWithFrame:firstView.frame];

[tableView setDataSource:self];
[tableView setDelegate:self];

[tableContainer setDocumentView:tableView];

[firstView addSubview:tableContainer];

//You mentioned that ARC is turned off so You need to release these:
[tableView release];
[tableContainer release];
于 2012-08-09T16:14:05.023 に答える