Контроллеры IPhone Navigation - лучшие практики для повторного использования представлений - PullRequest
0 голосов
/ 09 ноября 2010

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

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

Мне действительно нужно пройти через стек Nav Controller и найти уже просмотренное мной изображение карты и переместить его на вершину стека.

Вместо этого я создаю новый и просто нажимаю на него сверху.

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

Кто-нибудь получил хороший пример поиска представления в стеке Nav Controller.

Как мне это сделать?

Нужно ли сохранять указатель на мое представление карты в App Delegate?

Если есть способ быстро найти представление в стеке или мне нужно где-нибудь сохранить индекс / NSDictionary в их расположении.

Я заметил, что тот, кто пишет приложение для Facebook, теперь имеет ту же проблему. Когда приходят уведомления, они открывают приложение, создают представление Notification и помещают его в стек. Через некоторое время вы закрываете целую кучу старых окон уведомлений, чтобы вернуться в главное меню. ура

1 Ответ

1 голос
/ 09 ноября 2010

Если вам нужен конкретный view-контроллер на вершине стека, который вы уже поместили в стек, вместо его создания, вы можете использовать следующий метод:

- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated

Если вы знаете заранееviewControllers будут помещены в стек, вы можете сразу же отправить их с помощью функции ниже, вместо того, чтобы вставлять их снова и снова.

- (void)setViewControllers:(NSArray *)viewControllers animated:(BOOL)animated
...