Владелец файла UITabBarController Subviews - PullRequest
3 голосов
/ 18 августа 2011

Я следовал этому UITabBarController Tutorial , который создает панель вкладок с соответствующими подпредставлениями, в основном используя Interface Builder. Там создается UITabBarController, и там добавляются контроллеры представления вкладки.

Верно ли, что создание UIViewControllers {WelcomeViewController | AboutViewController}. {H | m} не нужно?

Кто является настоящим владельцем файла из подпредставлений {WelcomeViewController | AboutViewController} .xib?

Обратите внимание, что сначала я попытался создать метод IBAction в WelcomeViewController.h: в Интерфейсном Разработчике в WelcomeViewController.xib я мог подключить нажатие кнопки к этому действию, как это было показано у Владельца файла. Но во время выполнения он рухнул, так как реальный владелец файла предположительно является , а не объектом WelcomeViewController.m. Я здесь? Это ошибка, что IBAction появляется в Интерфейсном Разработчике (Xcode 4 здесь)?

Последний вопрос: как / можно по-прежнему отделять код (имея IBActions в WelcomeViewController.h для действий, которые происходят только в этом подпредставлении), когда я все соединяю в Интерфейсном Разработчике, как в учебнике?

1 Ответ

3 голосов
/ 20 августа 2011

Верно ли, что создание UIViewControllers {WelcomeViewController | AboutViewController}. {H | m} не нужно?

Нет, оба контроллера необходимы, поскольку для управления иерархией представления должен быть как минимум (и, оптимально, максимум) один ViewController на каждое полноэкранное окно. TabBarController - это всего лишь разновидность «тупого» мета-контроллера, управляющего отображением загружаемых им субконтроллеров - поэтому вам нужны контроллеры для переключаемых видов. Я бы порекомендовал вам прочитать эту часть документа Apple .

Кто является настоящим владельцем файла подпредставлений {WelcomeViewController | AboutViewController} .xib?

Владельцем файла должен быть соответствующий класс контроллера (в вашем случае {WelcomeViewController | AboutViewController}. {H | m}) - вы можете установить класс в Интерфейсном Разработчике в палитре инспектора, когда выбран Владелец файла. Только у самого первого окна (обычно называемого Main.xib или около того), которое открывается при запуске приложения, должен быть делегат приложения в качестве владельца файла. Владельцы файла владеют объектами файла XIB / NIB - в отношении ссылки на объект, вы понимаете, о чем я :) Я думаю, что также должна быть возможность загружать файл XIB / NIB с другими контроллерами (и другой контроллер автоматически становится файлом Владелец), но я не уверен.

... Я прямо здесь? Это ошибка, что IBAction появляется в Интерфейсном Разработчике (Xcode 4 здесь)?

Возможно, вы неправильно связали действие в Интерфейсном Разработчике, что является распространенной ошибкой. Попробуйте удерживать клавишу Ctrl, затем перетащите линию от кнопки на владельца файла и выберите нужный метод для ссылки. Это должно сделать это.

Последний вопрос: как / можно все еще отделять код (имея IBActions в WelcomeViewController.h для действий, которые происходят только в этом подпредставлении), когда я все соединяю в Интерфейсном Разработчике, как в учебном пособии?

Я думаю, что ответил на это в первом абзаце - WelcomeViewController все еще там, и все, что вам нужно сделать, это создать IBOutlets и подключить их в IB. Конечно, вы также можете выполнить подключение программно, так как «представление» элемента автоматически заполняется (через соединение «Владелец файла»), и все подпредставления доступны оттуда.

...