Как программно получить доступ к NSTableView, который был создан в Интерфейсном Разработчике? - PullRequest
1 голос
/ 06 декабря 2010

Я новичок в программировании на Objective-C и Cocoa (пришло из опыта разработки C / C ++ много лет назад на других платформах). Я пишу приложение для загрузки удаленных данных на регулярной основе (то есть каждые X секунд), анализирую их, сортирую / фильтрую в NSArray и отображаю / обновляю указанные данные в NSTableView. После прочтения нескольких книг, большого количества справочного материала по Apple OS X и экспериментов мне удалось реализовать все (удаленную загрузку данных, логику анализа / фильтрации, хранение в памяти и т. Д.), За исключением фактического обновления NSTableView данными. ,

Я не уверен, что я просто упускаю что-то очевидное или просто как мое приложение должно быть разработано в соответствии с концепцией MVC, или нехватка фактического кода в Interface Builder просто не то, к чему я привык, но я не могу показаться чтобы определить, как я могу программно получить доступ / манипулировать NSTableView, который был создан в Интерфейсном Разработчике.

Я попытался (в Интерфейсном Разработчике) перетащить экземпляр NSObject моего объекта на основе NSArray, где-тогда я могу подключить источник / источник данных моего NSTableView, но это приводит к другому экземпляру моего объекта на основе NSArray (не подключается NSTableView для моего существующего, программно объявленного и созданного экземпляра объекта). Точно так же я подумал установить программный источник данных моего NSTableView, но я не смог определить, каким образом я могу программно обращаться к объекту NSTableView, хранящемуся в файле .xib / .nib, кроме как через тег (для которого я не смог определить, из какого объекта вызывать метод viewWithTag:, после установки значения тега моего NSTableView в Интерфейсном Разработчике).

Будем весьма благодарны за любые предложения, советы или рекомендации. Это похоже на одну из тех вещей, которые будут очень простыми (и как только у меня это будет работать передо мной, это будет иметь гораздо больше смысла), но я просто не могу заставить исходную точку / пример работать.

1 Ответ

2 голосов
/ 06 декабря 2010

Вам необходимо присоединить переменную экземпляра в классе контроллера вашей таблицы к таблице в построителе интерфейса. Объявите таблицу в своем классе следующим образом:

IBOutlet NSTableView* myTable;

...

@property (nonatomic, retain) IBOutlet NSTableView* myTable;

И не забудьте его синтезировать.

На вкладке подключений информационного окна в конструкторе интерфейсов подключите новую розетку вашего контроллера к своей таблице. Затем при загрузке вашего вида из XIB эта розетка будет подключена.

Надеюсь, это поможет некоторым.

...