Как обновить NSTableVIew при заполнении связанного с ним NSMutableArray (bind) - PullRequest
2 голосов
/ 29 октября 2010

Я пытался связать свой NSArraycontroller с NSMutableArray;массив содержит объекты типа "iData" (это пользовательский класс).Кроме того, класс содержит несколько NSMutableString переменных, которые устанавливаются в качестве ключей для KVC.Затем я связал свой NSTableColumn с NSArrayController и установил пути модели ключей для каждого столбца соответственно.

Когда я пытаюсь заполнить массив, графический интерфейс ничего не показывает.Что я забыл?

1 Ответ

12 голосов
/ 22 апреля 2011

Так что, вероятно, вы решили это давно, но в случае, если кто-то еще наткнется на этот вопрос ...

Я заполняю массив через NSMutableArray, но я не уверен, какМогу ли я заполнить массив через NSArrayController, так как у меня нет экземпляра в моем классе Controller.m.Пожалуйста, скажите мне, как я могу решить эту проблему.

Возможно, вы делали что-то вроде

[myData addObject:someObject];

Однако ваш NSArrayController не узнает об этом измененииэкземпляр NSMutableArray, потому что addObject не соответствует KVC.Вам необходимо сообщить любому объекту, который наблюдает, что ваш экземпляр NSMutableArray изменился.Есть как минимум два способа сделать это.Предполагая, что ваше свойство экземпляра NSMutableArray называется "myData", вы можете сделать что-то вроде следующего:

[self.willChangeValueForKey:@"myData"];
[myData addObject:someObject];
[self.didChangeValueForKey:@"myData"];

или

NSMutableArray *bindingsCompliantArray = [self mutableArrayValueForKey:@"myData"];
[bindingsCompliantArray addObject:someObject];

Другой ответ SO (связанный) имеет хорошее объяснение того, что на самом деле делает mutableArrayValueForKey, но я рекомендую прочитать документы для разработчиков Apple по кодированию значения ключа и наблюдению значения ключа, чтобы понять его.

Я перетащилЭкземпляр NSController в моем подносе mainmenu.nib.Нужно ли мне объявить IBOutLet NSArrayController в моем файле Controller.h, а затем связать его с экземпляром NSArrayController в трее?

Вам нужен NSArrayController экземпляр в вашем файле пера, но вы делаетене нужно IBOutlet в вашем интерфейсе для ситуации, которую вы описали здесь.NSArrayController должен быть привязан к ключу вашего NSMutableArray (myData в моем примере), и, похоже, у вас уже правильно связаны столбцы таблицы.

...