После добавления вида по методу pushViewController
в панели навигации появится кнопка «Назад», чтобы отобразить представление со стека. Однако, похоже, что iOS не уничтожит представление после того, как вытащил его из стека, и когда он будет уничтожен? Можем ли мы уничтожить его вручную, когда вы выходите из вида?Как уничтожить представление, которое добавлено pushViewController?
ответ
Вообще картина выглядит так:
- (void)pushSomeViewControllerOnStack
{
SomeViewController* someViewController = [[SomeViewController alloc] initWithNibName:@"SomeView" bundle:nil];
[self.navigationController pushViewController:someViewController animated:YES];
[someViewController release];
}
Другими словами, контроллер навигации будет делать свой собственный retain
контроллера вида, который означает, что вы также потребность в release
это самостоятельно, так как есть более init
. Контроллер навигации также позаботится о том, чтобы освободить этот контроллер, когда это необходимо.
Вы должны реализовать методы viewDidUnload
и dealloc
в рамках ваших подклассов UIViewController
.
Когда UINavigationController
выталкивает контроллер вида со своего стека, код в этих методах будет выполнен.
Вы должны прочитать View Controller Programming Guide for iOS: Navigation Controllers документацию из библиотеки IOS разработчиков Apple, а также эталонный класс документации для UINavigationController
и UIViewController
классов, так что вы будете лучше понимать вид контроллера жизненного цикла и что ожидать, когда происходят различные события приложения.
- 1. , отклоняя текстовое представление, которое добавлено как подпрограмма программно в сцене
- 2. Android - Как я могу получить представление, которое было добавлено программно?
- 3. Установить ограничения на представление, которое добавлено в UIScrollView?
- 4. Перемещение в другое представление - pushViewController
- 5. Как я могу уничтожить представление?
- 6. Как заставить pushViewController показывать только представление назначения?
- 7. pushViewController, чтобы открыть представление в ландшафте
- 8. Как удалить представление, которое вводится?
- 9. Как проверить, было ли добавлено представление динамически или через xml
- 10. Добавлено событие, которое срабатывает после подписания
- 11. Как сделать анимацию «pushviewcontroller» БЕЗ использования pushviewcontroller?
- 12. Позиционное изображение, которое добавлено с псевдонимом CSS
- 13. не может уничтожить представление связанной модели
- 14. Уничтожить представление во время имитации предупреждения памяти
- 15. Pushviewcontroller
- 16. Как проверить, добавлено ли представление в регион в PRISM?
- 17. Как перемещать представление вдоль подвью, если UIgestureRecogniser добавлено в MainView?
- 18. Как использовать loadnibnamed to pushviewController
- 19. Получить представление, которое коснулось GestureDetector
- 20. pushViewController не нажимает
- 21. Как создать представление, которое перекрывает панель действий?
- 22. Как узнать представление, которое принимает текущий жест
- 23. Как отобразить представление, которое не заполняет экран?
- 24. Как создать представление, которое больше экрана?
- 25. Как создать представление, которое изменит интерфейс?
- 26. Как получить представление, которое содержит определенный Drawable?
- 27. Нужно представление, которое действует как просмотр журнала
- 28. Как удалить представление, которое я создал?
- 29. Как инициализировать пользовательское представление, которое представлено UINavigationController?
- 30. Как протестировать действие контроллера, которое сериализует представление
спасибо Shaggy Frog, но моя проблема заключается в том, что теперь открывается только механизм автоматической автоопределения системы, могу ли я выпустить его вручную при появлении представления? – Kelvin
Контроллеры первого взгляда - это то, что выталкивается из стека, а не из представлений. Во-вторых, диспетчеры просмотра позаботятся о выпуске своего соответствующего вида; вы не должны беспокоиться о том, чтобы выпускать представления так, как вы описываете. –