Привязки NSTableView, как добавить строку - PullRequest
3 голосов
/ 29 мая 2011

Я работаю над приложением с этим интерфейсом (извините, язык является голландским):

http://www.flickr.com/photos/pluueer/5756159100/

Функция добавления (включая четыре поля NSTextFields) в NSTableViewкогда-нибудь переместятся на лист, но пока это нормально.Я установил привязки в соответствии с руководством (http://cocoadevcentral.com/articles/000080.php),, но в руководстве не указывается, как добавлять строки так, как я хочу (просто добавляется пустая строка, которую необходимо редактировать в NSTableView).

У меня есть связь между кнопкой «Voeg toe» (по-голландски «Add») и контроллером массива, но после нажатия я получаю сообщение:

2011-05-28 23:37:56.149 Hop Calc[4345:a0f] -[__NSPlaceholderDictionary initWithObjects:forKeys:]: number of objects (0) not equal to number of keys (4)

Это имеет смысл, потому чтоЯ ничего не реализовал для добавления строк, но я просто не знаю как.

1 Ответ

5 голосов
/ 29 мая 2011

«Добавить строку в таблицу» - неправильный способ думать об этом. Ваша таблица представляет коллекцию, а контроллер предоставляет информацию в таблицу, являясь посредником между таблицей (представление) и коллекцией (модель). Поскольку вы упомянули привязки, коллекция, вероятно, управляется NSArrayController. Итак, вы хотите добавить новый объект (такого типа, которым управляет ваш контроллер массива) в массив содержимого контроллера массива.

Самый простой способ: подключите кнопку Add к действию -add: NSArrayController. Это добавит пустую строку.

Если вы хотите больше контроля, подключите кнопку «Добавить» к вашему собственному действию в каком-либо контроллере. Это действие создаст экземпляр того, что представлено вашим контроллером массива, предварительно заполнит его (или все, что вы хотите сделать), затем, используя выход, который он содержит для вашего NSArrayController, вызовет -addObject: метод контроллера массива для добавления объекта ( возможно вызов -rearrangeObjects, чтобы заставить контроллер массива пересортировать его содержимое).

...