Попытка понять сегменты, управление памятью и лучшие практики - PullRequest
0 голосов
/ 12 марта 2012

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

Тем не менее, я хотел бы кнопку выхода на каждой странице. Я думал об этом, чтобы добавить кнопку на панель навигации других экранов. В качестве теста я добавил кнопку выхода из системы на экран несколькими уровнями и добавил ответ на экран входа в систему. Я обновил метку на странице, чтобы увидеть, вернулась ли она на ту же страницу. Когда он вернулся к экрану входа в систему, ярлык был пуст, что заставило меня поверить, что я не вернулся к экрану входа в систему, а создал новый экран входа. Как мне выйти из системы и вернуть ее в начало?

Правильно ли я поступаю по этому поводу, или в этом есть лучшая практика?

1 Ответ

1 голос
/ 12 марта 2012

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

Похоже, вы используете UINavigationController.Если это так, вы можете использовать метод popToRootViewControllerAnimated:, чтобы удалить все контроллеры представления из стека навигации и вернуться в корень (который является вашим контроллером представления входа в систему).Другие контроллеры представления будут освобождены, когда они будут удалены из стека навигации, и у вас не возникнет возможная проблема с памятью, которую вы описываете.

// do this when the user clicks your Logout button
[[self navigationController] popToRootViewControllerAnimated:NO];
...