Приложение для iPhone: общая иерархия приложений и архитектура - PullRequest
2 голосов
/ 05 мая 2009

Я немного боролся с моим первым настоящим приложением для iPhone и хотел получить совет о том, как это должно быть структурировано. Я ищу некоторые рекомендации по созданию компонентов пользовательского интерфейса и их объединению для создания потока приложения (программно создавайте представления / контроллеры по сравнению с Interface Builder и т. Д.).

Обзор:
Мне нужно показать "Логин" при запуске приложения.
- Показать «Регистрация», если они нажимают кнопку регистрации.

После входа ... У меня есть TabBarController, загружающий 4 просмотра. Эти 4 вида должны будут загрузить подвиды (например, master-detail).

Мой вопрос:
1) Каков наилучший способ объединить эту структуру навигации? Создать каждое представление как .xib с соответствующим ViewController? Как они склеены?

2) Как мне обращаться с навигацией по входу в систему / подписке, при запуске не должна отображаться панель вкладок, но она понадобится после аутентификации пользователя.

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

Я знаю, что это может немного сбивать с толку, все и любая помощь очень ценится.

РЕДАКТИРОВАТЬ: Для представления входа в систему в верхней части панели вкладок я использовал это, довольно просто.

LoginViewController *loginViewController = [[LoginViewController alloc] init];
[loginViewController initWithNibName:@"Login" bundle:nil]; 
[self.tabBarController presentModalViewController:loginViewController animated:YES];

Ответы [ 3 ]

1 голос
/ 05 мая 2009

1) Каков наилучший способ объединить эту структуру навигации? Создать каждое представление как .xib с соответствующим ViewController? Как они склеены?

Используйте UINavigationController и вставляйте свои пользовательские представления в стек навигации по мере необходимости. Посмотрите пример приложения Navigation Controller с помощью опции Xcode New Project , чтобы понять, как это работает.

2) Как мне обращаться с навигацией по входу в систему / зарегистрироваться, при запуске не должна отображаться панель вкладок, но она потребуется после аутентификации пользователя.

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

Возможно, используйте анимацию просмотра, чтобы открыть панель вкладок после успешной аутентификации.

Бонусный балл) Есть ли документированные лучшие практики для такого рода вещей? Я собирал вместе работающий код, но очень заблудился и хочу начать все заново, делая все правильно.

В конечном итоге вы переписываете свой проект несколько раз - и это хорошо. Ознакомьтесь с примерами приложений Apple (доступных на сайте iPhone ADC), так как они содержат несколько «лучших» способов использования нескольких компонентов UIKit. Что касается создания более крупного приложения, сделайте ваш дизайн как можно более простым и используйте как можно больше компонентов пользовательского интерфейса Apple. Вы всегда можете настроить позже.

1 голос
/ 06 мая 2009

Когда вы создаете новое приложение на основе панели вкладок в XCode, вы в значительной степени уже настроены так, как вам хочется - есть основной XIB, который загружает представления для каждой вкладки из отдельных файлов XIB. У вас есть один XIB на вкладку. Обратите внимание, что при изменении типов или добавлении вкладок необходимо указать правильный тип контроллера представления как в XIB с панелью вкладок, так и в XIB, который вы используете для создания своего представления!

Что касается представления входа в систему, общий подход заключается в использовании панели вкладок, как описано выше, но в делегате приложения метод applicationDidFinishLaunching представляет модальный контроллер представления, который показывает экран входа в систему. Модальный контроллер скрывает панель вкладок и все остальное до тех пор, пока они не будут выполнены, тогда его можно отклонить.

0 голосов
/ 05 мая 2009

На мой взгляд, только один пример программирования Какао и очень простые приложения подходят для одного файла пера. В противном случае вам следует распределить компоненты интерфейса по нескольким кончикам. Это означает, что каждый кончик меньше и при загрузке в память загружает только те компоненты, которые необходимы. Это повысит производительность вашего приложения и поможет логически организовать вашу программу и упростит ее отладку при возникновении проблем.

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

Apple предлагает следующие рекомендации:

При создании файлов пера старайтесь учитывать следующие рекомендации:

Создайте свои nib-файлы с учетом отложенной загрузки. Запланируйте загрузку файлов пера, которые содержат только те объекты, которые вам нужны.

В главном файле пера для приложения Mac OS X рассмотрите возможность сохранения в файле пера только строки меню приложения и дополнительного объекта делегата приложения. Избегайте включения любых окон или элементов пользовательского интерфейса, которые не будут использоваться до тех пор, пока приложение не будет запущено. Вместо этого поместите эти ресурсы в отдельные файлы пера и загружайте их по мере необходимости после запуска.

Хранить повторяющиеся компоненты пользовательского интерфейса (например, окна документов) в отдельных файлах перьев.

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

Для получения дополнительной информации вы можете посетить:

http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html#//apple_ref/doc/uid/10000051i-CH4

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