Лучшая практика для владения UINavigationController в приложении на основе навигации? - PullRequest
2 голосов
/ 01 марта 2010

Мое маленькое приложение становится все более обширным, и я ищу несколько советов, касающихся передовых методов управления / владения контроллерами представления и контроллерами навигации.

Вот что я сейчас делаю:

  1. AppController - это синглтон, который создает и владеет экземпляром UINavigationController. К контроллеру приложения и, следовательно, к контроллеру навигации можно получить глобальный доступ по методу +sharedController.
  2. Каждый контроллер представления в приложении, который хочет выдвинуть новый контроллер представления, в основном делает это:

    NextViewController * nextViewController = [[NextViewController alloc] init]; [[[AppController sharedController] navigation] pushViewController:nextViewController ...]; [nextViewController release];

Таким образом, все «листовые» представления отвечают за создание следующего представления и его перемещение, а навигационный контроллер живет в одном месте, куда каждый может добраться.

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

Спасибо.

Ответы [ 2 ]

7 голосов
/ 01 марта 2010

Каждый контроллер представления имеет свойство navigationController. Если UIViewController является частью стека навигации, это свойство устанавливается, чтобы вы могли получить ссылку на UINavigationController. Таким образом, вместо того, чтобы ссылаться на AppController (или, возможно, вообще иметь его - вы можете просто поместить это в AppDelegate), вы можете просто сделать что-то вроде этого:

NextViewController * nextViewController = [[NextViewController alloc] init];
[self.navigationController pushViewController:nextViewController ...];
[nextViewController release];
3 голосов
/ 01 марта 2010

Почему бы не использовать self.navigationController в тех представлениях, которые нужно подтолкнуть? Единственное, что вам нужно сделать в AppController, это выдвинуть начальный вид на контроллер навигации.

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