Я обычно не рекомендую привязки, и определенно не сложные привязки, новым разработчикам Какао.К сожалению, привязки имеют тенденцию «ничего не делать», когда они неправильно настроены.Это делает их очень сложными для отладки даже для опытных разработчиков.Привязки работают очень хорошо, когда имеешь дело с большой страницей параметров конфигурации, связанной с NSUserDefaults
, но из-за этого сложно создать сложный пользовательский интерфейс.
С другой стороны, ваша установка кажется очень странной.Владелец MainMenu.xib
почти всегда должен быть NSApplication
.Вместо того, что вы делаете, вы должны перетащить новый NSArrayController
на вашу XIB и подключить его, как вы описали, но не делать его владельцем файла.
Я бы ожидал, что вывидя исключения в вашем журнале.Возможно "NSArrayController
не отвечает на селектор setDelegate:
" или тому подобное.Если вы видите это, то это потому, что файл по умолчанию MainMenu
nib настроен для связи делегата приложения с владельцем файла.
Сначала просто небольшая цитата из Apple docs, чтобы подчеркнуть точку зрения о привязках:
Заполнение табличного представления на основе представления с использованием привязок Какао считается сложной темой.Хотя для этого требуется значительно меньше кода (в некоторых случаях кода вообще нет), привязки трудно увидеть, если вы не знакомы с интерфейсом.Строго предполагается, что вы знакомы с методами программного использования табличных представлений на основе представлений, прежде чем переходить к привязкам Какао.
Мне нравится слово "строго" в этом разделе.После многих лет разработки с привязками и без них я стараюсь избегать их, за исключением самых простых случаев (например, панелей настроек, где они невероятно полезны).
Без привязок вы будете следовать инструкциям в Заполнение табличных представлений на основе представлений программно .В основном вы будете реализовывать numberOfRowsInTableView:
и (при условии 10.7+) tableView:viewForTableColumn:row:
.Для каждой строки и столбца вы возвращаете представление, содержащее нужные вам данные.Это взято из iOS-подхода, очень приятный и чрезвычайно гибкий.
Если вам нужна предварительная версия 10.7, то все немного сложнее, но все же проще, чем привязки.См. Заполнение табличных представлений на основе ячеек .При этом используется NSCell
, а не NSView
.Если вам просто нужна простая таблица, отображающая строковые данные, это не сложно.Просто внедрите numberOfRowsInTableView:
и tableView:objectValueForTableColumn:row:
.Последний должен возвращать что-то, что может быть приведено в строку.
Если вам нужен пользовательский NSCell
для pre-10.7, попробуйте его самостоятельно, используя документы, и тогда у вас, вероятно, будут некоторыеновые вопросы для публикации.