0

ビューベースのNSTableView内のすべてのNSTextFieldのサイズを変更しようとしています。すべてのテキストフィールドで[myTextfieldsizeToFit]を呼び出したい。私の質問は、テーブルビューのすべてのビューを反復処理する方法です。enumerateAvailableRowViewsUsingBlock:を試しましたが、機能しません。これを解決するにはどうすればよいですか?

4

2 に答える 2

3

これを試して。IB で、テキスト フィールドのタグを好きなように設定します (この例では 1 を使用しています)。NSTableCellViewその後、 を呼び出して for each 行にアクセスできますviewAtColumn:row:makeIfNecessary:makeIfNecessary:が に設定されていることを確認しYESます。

コード:

int x;
for (x = 0; x < [tableView numberOfRows]; x++) {
    NSTableCellView *cellView = [tableView viewAtColumn:0 row:x makeIfNecessary:YES];
    NSTextField *tField = [cellView viewWithTag:1];
    [tField sizeToFit];
}

これは私にとってはうまくいったので、そうでない場合は驚くでしょう。すでに作成されているはずの行ビューにアクセスする必要がある理由について誰かが洞察を与えることができれば、私はそれを感謝しmakeIfNecessary:ます。YES

于 2012-12-22T00:42:33.597 に答える
0

で合計行数を取得できますint numberOfRows = [yourTableView numberOfRows]。次に、それを使用してそれらを反復処理し、メソッドを呼び出します。(NSTextField に IB で一意のタグを付けて、NSTableCellViewの他のサブビューと区別すると仮定します)。

    for (int i = 0; i < numberOfRows; i++) {
        NSTableCellView *someTableCellView = [[yourTableView viewAtColumn:(NSInteger) row:i makeIfNecessary:FALSE];
        NSTextField *yourTextField = [someTableCellView viewWithTag:(NSInteger)];
    }

これを行う別の場所は、tableViewtableView:viewForTableColumn:row:を呼び出すたびに呼び出されるNSTalbeView デリゲート メソッドですreloadData

于 2012-06-04T21:02:30.543 に答える