1

ラベル (NSTextField) をクラスのプロパティにバインドしようとしています。Interface Builderでは、Model Key Path = self.aStringを使用して、ラベルのファイルの所有者にバインドします。

  • ファイルの所有者は、aString が次のように定義されたNSViewControllerのサブクラスです。@property (nonatomic, strong) NSString *aString;

  • ラベルは、管理対象オブジェクト コンテキストとのバインディングによって実行時に埋められるビュー ベースの NSTableView内に配置されます。

クラスの実装で呼び出すと[self setAString:@"..."][self setValue:@"..." forKey:@"aString"]テーブルビューで何も変わりません。ただし、ラベルがビュー内に配置されている場合は機能します。なんで?

4

3 に答える 3

0

これはビューベースのテーブルビューの制限であり、私が知っていることから、それを修正する唯一の方法は、TableView.delegate自分File's Owner(または代わりにバインドしようとしている場合は別のオブジェクト)に設定することです。

(理由がわからないので、理由を説明するためのより良い答えを期待しています)

Cakeの答えは良い回避策です。

于 2012-06-25T15:36:23.990 に答える
0

NSTableCellViewをサブクラス化し、それに NSString プロパティを追加することで解決しました。次に、プロパティの名前をキーとして、ラベルの値をテーブルセルビューにバインドしました。

于 2012-08-07T06:41:35.537 に答える
-1

テーブルビュー内にある場合、おそらく直接アクセスすることはできません。テーブルビューへの参照を保存してから、ラベルを呼び出してみてください。したがって、テーブルに t という名前の参照がある場合は、ラベルをテーブルに接続してから: t.labelName.text = @"string"ただし、テーブルのセル内にある場合はcellForRowAtIndexPath、サブクラス化されたセル内のラベルを使用して参照する必要がある場合があります。これを行う方法がわからない場合は、コードを投稿できます。

于 2012-06-25T14:30:55.957 に答える