1

がありNSTableView、そのデータ ソースとデリゲートが設定されています。セルをカスタマイズしたいので、ライブラリからビューベースのセル ビューをドラッグしました。次に、特別なセルを完全に制御するために、ServiceCellから継承するクラスを作成しました。NSTableCellViewその後、nib ファイルからセル クラスにコントロール ドラッグして、セル内IBOutletの画像とテキスト フィールドのプロパティを作成します。

NSTableView のデリゲート メソッドでは、次のように記述しました。

- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
    // Get a new ViewCell
    ServiceCell *cellView = [tableView makeViewWithIdentifier:@"ServiceCell" owner:self];

    NSLog(@"Field = %@", cellView.textField); //which turns out to be null!!!

    if( [tableColumn.identifier isEqualToString:@"ServiceColumn"] )
    {
        cellView.serviceImage.image = nil;
        cellView.nameLabel.stringValue = @"Hello";
        return cellView;
    }
    return cellView;
}

ご覧のとおり、テキスト フィールドは null です。しかしmakeViewWithIdentifier:、Interface Builder でセルを見つけて、アプリ ウィンドウにセルを表示しました。値を設定できないのはなぜですか?

4

2 に答える 2

0

テーブルビューでセルを選択し、識別子名を指定します(コードで使用しているものと同じです。切り取ったものは になります@"ServiceCell")、コード部分は正しく機能します。

于 2013-10-28T06:29:44.213 に答える
0

問題は、テキスト フィールドにアクセスしているが、そのテキスト値にアクセスしていないことです。以下のようなログステートメントを試してください:-

NSLog(@"Field = %@", cellView.textField.stringValue);
于 2013-10-27T09:25:13.613 に答える