2015-01-19 5 views
0

, поэтому я создаю простое приложение для чата. У меня будет экран входа в систему, зарегистрируйтесь, а затем в UITableViewController, чтобы показать список друзей. Я не уверен, должен ли я использовать UINavigationController для этого или просто придерживаться UIViewControllers. Ниже приведены два изображения для потенциальных установок .: enter image description hereДолжен ли я использовать контроллер навигации в этом сценарии?

и: enter image description here

Я просто интересно, это вообще лучшая практика для использования навигации контроллер? Я также немного смущен тем, что происходит с контроллером представления, когда он выскочил. [self.navigationController popViewControllerAnimated: YES]; сохранить контроллер просмотра в памяти для доступа к нему позже или новый, созданный каждый раз? Тот же вопрос для [self rejectViewControllerAnimated: YES complete: nil], это уничтожение контроллера или его хранение для использования позже? Спасибо

+0

Я довольно уверен, что в обоих случаях контроллер вида будет уничтожен, а новый создан. Это легко проверить. Просто переопределите метод 'dealloc' контроллера представления и поместите' NSLog (@ "destroy"); 'в нем. – user3386109

ответ

1

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

Если вашему приложению необходимо представить его контент по-иерархически (мастер/деталь), довольно часто используется UINavigationController.

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

Что касается памяти, как только вы не держите каких-либо ссылок на контроллерах либо представлены или однократном нажатии удалить (совал/уволен), вы потеряете какие-либо ссылки на них так нет места используется в памяти

+0

спасибо, что это прекрасно, просто интересно было об управлении памятью. Мне не очень нравится то, как контроллер навигации представляет контроллеры представлений, используя анимацию слева направо, не очень подходит для приложения, которое я создаю. Будет придерживаться UIViewControllers – Kex

+0

, вы всегда можете изменить способ, которым управляет навигационный контроллер, для создания нового контроллера vie, но не настолько «стандартного». Поэтому я предлагаю вам взглянуть на работу с ограничениями на просмотр контроллеров View Viewers, то есть на самом деле то, что делает контроллер навигации, чтобы вы могли реализовать правильную модель представления для своего приложения. –

+0

Если бы мне нужно было создать push-шаг из кнопки «Назад» к контроллеру, прежде чем это будет беспорядок? Метод rejectViewController не вызывается, значит ли это, что контроллер остается в памяти? – Kex

0

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

Второй вопрос связан с управлением памятью. Это похоже на подсчет ссылок. Если у вас есть что-то, чтобы ссылаться на UIViewController, его подсчет ссылок не упадет до нуля, что означает, что система не очистит это. Итак, у вас все еще есть способ получить то. Если вы просто просто выскочите или отпустите его, не ссылаясь на него. Счетчик ссылок станет нулевым, и система очистит его.

0

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

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

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