Как я могу разделить связанный массив на части, которые автоматически заполняют таблицу? - PullRequest
0 голосов
/ 27 января 2009

Я использовал это «руководство», чтобы связать мой массив с именем «collection» с NSTableview на моем интерфейсе: http://www.cocoadev.com/index.pl?NSArrayController

Интерфейсный конструктор не так уж и сложен. Это становится трудным, когда я пытаюсь отобразить данные из моего массива в виде.

в моем .h файле:

@interface MyDocument : NSDocument
{
    NSMutableArray *collection;
    //other variables
}

и в моем .m файле:

@implementation MyDocument
@synthesize collection;
     //quite some functions

     inside one function (that works):
     [collection addObject:fileName];

     //some other functions

     inside the init function:
     collection = [[NSMutableArray alloc] init];

Теперь я предполагаю, что массив хорошо связан с интерфейсом и табличным представлением внутри него, но, конечно, табличное представление и его столбцы должны быть заполнены определенным образом. Прямо сейчас ничего не показывает после добавления элемента. с коллекция addObject: имя файла функция

Должен ли я создать подмассив как один элемент, заполненный полями? И как я должен привязать эти значения / поля к конкретным столбцам. (поля ' Artist ', ' title ' и т. д.)

Я уже привязал каждый столбец в Интерфейсном Разработчике к Контроллеру массива с Ключом контроллера 'ограмма объектов ' и Путь к ключу модели ' художник », ' название ' и т.д.

Пожалуйста, оставьте объяснение простым, так как я постепенно начинаю думать, что никогда не получу эту вещь с контроллером массива ... Objective-C не кажется такой уж сложной, но связывание, в котором она нуждается, это то, чего я просто не понимаю получить. Примеров Apple недостаточно для новичков

Ответы [ 2 ]

2 голосов
/ 28 января 2009

Обычно для заполнения ваших данных вы используете словарь (ключом будет keyPath и объект данных) для каждой строки, или, что еще лучше, создаете класс для представления данных и создаете новый экземпляр для каждой строки. , Сначала привязки могут быть немного хитрыми (если вы новичок в Cocoa, сначала привыкните к методам источников данных), но взгляните на этот учебник и примеры здесь . Оба содержат примеры, которые вы можете загрузить, и точно проверить, как привязки установлены в Интерфейсном Разработчике.

1 голос
/ 28 января 2009

Простое изменение массива ничего не говорит о том, что массив изменился. Вам нужно отправить уведомления KVO для мутации.

Правильный способ сделать это - реализовать методы доступа для свойства, а затем вызвать собственные методы доступа. В этом случае вам нужно реализовать insertObjectInCollection:atIndex: и передать длину массива в качестве индекса ([self insertObjectIntoCollection:fileName atIndex:[self countOfCollection], после реализации также countOfCollection).

Когда вы реализуете методы доступа, то когда объект связывается со свойством, Какао обернет методы доступа в магию KVO, которая отправит соответствующие уведомления для мутации.

...