Приложение для iPhone:Общая иерархия и архитектура приложений

StackOverflow https://stackoverflow.com/questions/823556

  •  05-07-2019
  •  | 
  •  

Вопрос

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

Обзор:
Мне нужно показать вид "Вход в систему" при запуске приложения.
--Показывать вид "Регистрация", если они нажимают на кнопку зарегистрироваться.

После входа в систему...У меня есть 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];
Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top