Objective-C - Понимание контроллеров представления - PullRequest
1 голос
/ 05 сентября 2011

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

Если у меня есть приложение с главной страницей, несколько представлений со структурой "иерархии"и о странице, не связанной с иерархией, какие файлы должны иметь мое приложение?Appdelegate, навигационный контроллер и контроллер представления?Более одного контроллера просмотра?Просто контроллер навигации?

Кроме того, все ли они должны содержаться в одном файле .xib или в нескольких файлах .xib?

Любая помощь будет принята с благодарностью.

Спасибо.

Ответы [ 2 ]

5 голосов
/ 05 сентября 2011

Хорошая привычка - иметь UIViewController для каждой страницы, которую вы хотите показать.Если я получу структуру вашего приложения, у вас должна быть главная страница (со многими другими UIView внутри) и другая страница (о странице).Если это правда, я предлагаю два UIViewController с.

UINavigationController - это подкласс UIViewController, который позволяет вам «перемещаться» между страницами.Это не является строго необходимым, но рекомендуется (вы также можете реализовать собственную навигационную систему, но проще использовать ту, что предлагает вам Apple).Другая навигационная система основана на UITabBarController , если вы хотите взглянуть.

Предполагая, что я получил структуру вашего приложения, вам понадобятся два файла .xib, по одному на каждую страницуу вас есть.

Делегат приложения концептуально отличается от контроллера представления, у вас будет только один делегат приложения, автоматически созданный Xcode (вы, конечно, можете изменить его в соответствии со своими потребностями).

2 голосов
/ 05 сентября 2011

Каждый «экран с контентом» (Apple использует этот термин) должен обрабатываться как UIViewController или, более вероятно, его подкласс. Контроллер точки зрения должен обрабатывать появление или исчезновение вида (включение / выключение экрана), поворот устройства, управление памятью, навигацию к другим контроллерам представления и так далее. Если вы создаете свой пользовательский интерфейс с IB, то каждый из этих контроллеров представления, скорее всего, будет иметь свой собственный файл .xib.

Каждый контроллер представления имеет одно представление (это свойство view), которое действует как основное представление для каждого «экрана с контентом», к которому вы затем добавляете свои подпредставления.

UINavigationController и UITabBarcontroller помогут вам контролировать иерархию вашего приложения. Они действуют только как контейнеры для других контроллеров представления и не содержат никакого пользовательского интерфейса, кроме панели навигации или панели вкладок. Используя контроллер панели вкладок, вы можете иметь несколько контроллеров представления, которые действуют точно так же, как вкладки браузера. Используя контроллер навигации, вы можете иметь стековую навигацию, в которой новые контроллеры представления перемещаются справа налево и выталкиваются слева направо, когда пользователь возвращается к предыдущему контроллеру представления. Вы даже можете иметь контроллер представления внутри контроллера навигации внутри контроллера панели вкладок.

Если вы не хотите использовать панель вкладок или контроллер навигации, вы можете перемещаться по контроллерам представления, представляя их модально с помощью presentModalViewController:animated: и отклоняя с помощью dismissModalViewControllerAnimated:. Если вы отправите YES для параметра анимации этих методов, вы получите анимацию, указанную свойством modalTransitionStyle контроллера представления, представляемого или отклоняемого. Возможные анимации: слайд снизу (по умолчанию), горизонтальное переворачивание всего экрана, постепенное увеличение / уменьшение изображения и скручивание на полстраницы.

Есть также некоторые предоставляемые Apple подклассы UIViewController, которые помогают вам быстрее настроить пользовательский интерфейс, например UITableViewController, который в основном является контроллером представления, который содержит таблицу в качестве основного вида и соответствует 'UITableView dataSource and протоколы делегатов, которые необходимы для определения того, как выглядит каждая ячейка и что она содержит.

На iPad есть один дополнительный контроллер контейнера UISplitViewController и еще один способ представления новых контроллеров представления с использованием UIPopover.

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