Привязки какао в Xcode 4 - PullRequest
       2

Привязки какао в Xcode 4

13 голосов
/ 02 апреля 2011

Objective-c обучаем;Какао способно к обучению;Я считаю Interface Builder и его потомок Xcode 4 совершенно непостижимым!Нет текста (как эквивалент исходного кода C или Obj-c), на который можно сослаться.Все описания "перетащите сюда; соедините это; перетащите туда Ctl", и я остаюсь потерянным ...

Я пытался просмотреть различные примеры ключевых технологий Apple.Я просматривал привязки Какао и файл примера в примере NSTableViewBinding в Apple Developer.Чтобы попытаться понять это, я пытался воспроизвести его.

Обращаясь теперь к комментариям в начале метода awakeFromNib в файле MyWindowController.m Как мне сделатьэти соединения в Xcode 4 ???

enter image description here

  1. Object, называемый TableArray, не существует ни в библиотеке объектов, ни в исходном коде;откуда это взялось?

  2. Referencing Bindings справа;как они создаются?

  3. Различные пары ключ / значение, упомянутые в начале метода awakeFromNib;как они создаются?

Я знаю, что Xcode 4 должен быть более простым улучшением, но я очень смущен заменой IB.Все материалы IB в Интернете относятся к совершенно другим более ранним версиям, поэтому я не могу найти много способов помощи.

Последующие действия

Я преуспелв выяснении привязок какао в Xcode 4. Мне удалось продублировать функциональность примера программы в несколько строк кода.

Вот проблемы, которые мне потребовалось некоторое время, чтобы выяснить:

  1. TableArray - это Array Controller Object, перетаскиваемый из библиотеки объектов в список объектов в XIB и затем переименованный.(Примечание для Apple: базовый класс объектов был бы хорош в представлении HUD правой кнопкой мыши)

  2. Ответ Стивена Полетто был бесценным руководством для соединения всего этого.

  3. Мне не сразу было понятно, как работает интерфейс подключения в HUD с правой кнопкой мыши: figure 2

  4. Массив хранения myContentArray подразумевается в экземпляре Array Controller Object

  5. Щелкните и перетащите из HUD TableArray в определение AppDelegate в файле .h, чтобы создать там соединение.

Ответы [ 2 ]

13 голосов
/ 02 апреля 2011

Чтобы установить привязки, описанные в комментариях awakeFromNib:

  1. TableArray - NSArrayController.В крайнем левом углу документа Interface Builder вы увидите контурный вид, показывающий все объекты, содержащиеся в вашем кончике.Когда этот кончик загружается во время выполнения, все объекты будут разархивированы и созданы.На предоставленном вами скриншоте вы увидите, что NSArrayController с именем «TableArray» уже существует.Если вам по какой-то причине нужно было создать еще один, перетащите NSArrayController из библиотеки объектов (справа внизу) в документ Interface Builder.
  2. Выберите столбец таблицы «Фамилия» в Interface Builder.Вы можете сделать это, нажимая треугольники раскрытия на виде структуры, пока не увидите «Столбец таблицы - Фамилия», или выбрав его непосредственно в основной области холста IB.Инспекторы (в правой части окна XCode) теперь будут отображать сведения о колонке с фамилией, поскольку это текущий выбранный объект.Выберите инспектора привязок.Вы можете навести курсор на значки в верхней части инспектора, пока не найдете один с надписью «Показать инспектора привязок» - это второй справа.Инспектор привязок представляет вам список всех доступных привязок для выбранного NSTableColumn.Вы увидите, что «Value» является одной из таких привязок - и именно эту привязку мы хотим установить в соответствии с MyWindowController.m.Поверните треугольник раскрытия рядом с «Value», чтобы раскрыть все обязательные детали.
  3. Теперь вы можете указать контроллер, через который вы хотите установить привязку и пути к ключам контроллера / модели для использования.Затем установите флажок «Привязать» и выберите «TableArray» из всплывающей кнопки «Привязать к:».Затем, укажите «ограмму объекта »в качестве ключа контроллера и« имя »в качестве пути к ключу модели.
  4. Вы заметите, что при вводе« имени »Xcode выдает серый предупреждающий значок с подсказкой« Xcode не может разрешить »введенный ключевой путь. "Xcode попытается определить введенный вами путь к клавиатуре.Таким образом, если бы вы связывали через NSArrayController, который содержал объекты класса Person, и класс Person определил свойство с именем "address", "selectedObjects.address" разрешился бы соответствующим образом, и Xcode подтвердил бы правильность вашего пути к ключу.Но в этом примере контроллер массива управляет объектами NSDictionary, и у Xcode нет возможности узнать, какие пары ключ / значение вы храните в этих словарях.Вы, разработчик, должны знать, что словари, хранящиеся в NSArrayController, действительно содержат пару «имя» / значение, поэтому вы можете игнорировать предупреждение.
  5. Повторите эти действия для других привязок, перечисленных в верхней части MyWindowController..m.

В разделе привязок привязок инспектора соединений отображаются все привязки, которые уже были установлены с помощью выбранного контроллера.Поэтому, если вы выберете TableArray и перейдете к инспектору соединений, теперь вы увидите «builtObjects.firstName» -> Значение, Столбец таблицы - Имя.Это показывает вам привязку, которую вы только что установили.

Прежде чем углубиться в более сложную тему, такую ​​как привязки какао, возможно, стоит освоиться с Interface Builder.Используйте его для создания соединений IBOutlet и IBAction, как внутри IB, так и между IB и исходным кодом.Привыкните к использованию инспекторов для изменения атрибутов объектов пользовательского интерфейса и т. Д. Как только вы освоитесь с общим рабочим процессом IB, решение привязок будет проще. Вот руководство, чтобы помочь.

1 голос
/ 02 апреля 2011

Интегрированная в Xcode 4 часть конструктора интерфейсов ничем не отличается от старого Interface Builder в том, что касается базовых концепций.

Загрузите XCode 3, который все еще доступен в Appleвеб-сайт и следуйте инструкциям, доступным в Интернете.

Или кто-то более полезный, чем я в SO, может написать хороший учебник, используя Xcode 4 ...

Тем не менее, позвольте мне объяснить вам несколько вещей.(Но я действительно рекомендую использовать Xcode 3 для вас на данный момент. Я не говорю, что Xcode 3 по сути лучше; я просто говорю, что Xcode 3 имеет больше учебников, чтобы вы могли легче понять концепцию, которая затем может бытьиспользуется с Xcode 4.)

  1. Файл nib / xib содержит заархивированные объекты в нем.В Интерфейсном Разработчике (или автономный или объединенный в XCode) создает файл nib / xib, создавая живые объекты, которые затем сушат вымораживанием в заархивированные объекты, когда файл сохраняется.TableArray - это экземпляр, созданный внутри файла пера.Вы можете перетащить универсальный объект из библиотеки объектов в перо и изменить его класс на что угодно.Вот как создается объект.

  2. Вы не создаете привязки ссылок.Привязка имеет направление от объекта A к другому объекту B. Вы устанавливаете привязки на стороне A (в данном случае NSTableColumn).Связывающие привязки просто показывают эту информацию на стороне B. Итак, выберите столбцы табличного представления в IB и установите там привязки.

  3. Это сделано на панели привязок NSTableColumn.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...