Потерянные во взглядах - лучший способ перехода между UIViewControllers - PullRequest
0 голосов
/ 23 февраля 2011

У меня есть приложение для iPhone / iPad, которое управляет его многочисленными контроллерами представления через UINavigationController и UITabViewController. UINavigationController обрабатывает большую часть взаимодействия с пользователем, а UITabViewController обрабатывает пользовательские настройки / предпочтения.

Мой делегат приложения инициализирует UINavigationController и выдвигает первый контроллер представления. Настройки (UITabViewController) доступны через кнопку в строке меню контроллера навигации; пользователь может вернуться к основному приложению (UINavigationController) с помощью кнопки на UITabViewController.

Мой вопрос: что мне делать с UINavigationController (и его стеком контроллеров представления), когда я показываю UITabViewController и наоборот? Есть ли какая-либо причина для удаления / освобождения / воссоздания каждого родительского контроллера, когда пользователь переключается между ними, или я должен добавить / удалить представление каждого родительского контроллера в окне моего приложения?

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

Спасибо.

Ответы [ 2 ]

0 голосов
/ 23 февраля 2011

Полагаю, вы имеете в виду UITabBarController.

Если ваше представление навигации будет отображаться в виде вкладок для элемента вкладки, я бы предложил, чтобы контроллер панели вкладок был корневым контроллером представления вашего приложения (и, следовательно, всегда отображался в приложении).

Если ваше навигационное представление является основным, и пользователь просто открывает представление панели вкладок для настроек и т. Д. И возвращается к навигационному представлению, то модальное представление контроллера панели вкладок является правильным способом.

В первом случае (контроллер навигации в контроллере панели вкладок) вам не нужно добавлять / удалять или выделять / освобождать представления, поскольку UIKit будет управлять вами.

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

0 голосов
/ 23 февраля 2011

Вам не нужно вручную управлять стеком контроллера навигации.То, что я хотел бы сделать, это представить ваш контроллер представления настроек как модальное представление.Это можно сделать на уровне контроллера навигации.

Предположим, что settingsViewController является свойством вашего контроллера основного вида.

self.settingsViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal
[self.navigationController presentModalViewController:self.settingsViewController animated:YES];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...