0

私の MainController には、NSArrayController にバインドする persons 配列があります。個人の名前が表のname列に表示されます。ボタンを NSArrayController add メソッドにバインドすると、ボタンを追加して新しい人を追加できますが、メソッドで新しい人を追加すると、テーブルに新しい人が表示されません。理由はわかりません。

ここに画像の説明を入力

新しい人を追加する私のコード

Person *p =[[Person alloc]init];
[self.persons addObject:p];

更新: NSMutableArray addObject は KVC ではないため、 http: //chanson.livejournal.com/85659.htmlで答えを知っているので、使用する必要があります

  [[self mutableArrayValueForKey:@"persons"] addObject:person];
4

1 に答える 1

1

行 [self.persons addObject:p] の self.persons が配列を参照している場合は、行 self.persons = people; を追加する必要があります。その後、テーブルを更新します。これが必要な理由はよくわかりませんが、おそらく KVO に関係しています。

一方、self.persons が配列コントローラーを参照する場合、配列コントローラーにオブジェクトを追加すると、テーブル列がバインドされている配置されたオブジェクトにオブジェクトが追加されるため、記述したとおりに機能するはずです。配列コントローラーにバインドされているため、そのようにすると配列も更新されます。

于 2012-07-25T15:31:05.217 に答える