Да, вы можете. Оптимально вы должны очистить представление, которым управляет каждый контроллер представления, когда он выходит за пределы экрана.
Просто присвойте nil
свойству view
заменяемого контроллера представления. Это освободит все ресурсы, используемые представлением, которое все равно не видно. В качестве дополнительного бонуса представление затем воссоздается с соответствующим кадром всякий раз, когда вы решаете снова принести определенный контроллер viw впереди.
Я также предполагаю, что то, что вы реализуете, является подклассом UIViewController
, который действует как контейнер для других контроллеров представления. Как брат UITabController
по имени CWGridController
или подобный. Нет, родительский контроллер представлений (ваш подкласс) несет ответственность за изменение размера кадра его дочерних представлений контроллеров представления.
Создание контроллера представления контейнера - задача не из легких, и поддержка для этого не завершена со стороны Apple. Есть несколько вещей, которые вы должны сделать, включая, но не ограничиваясь:
- Переадресация всех вызовов на изменение ориентации на все дочерние контроллеры представления.
- Правильно вызывайте все появляющиеся / исчезающие на дочернем контроллере представления по мере необходимости.
Последняя часть, которая заставит это работать, - это нарушение некоторых правил. Контроллеры представления работают очень плохо, если они не знают об их родительском контроллере представления, расположение будет неправильным, и модальный контроллер представления ведет себя странно. К сожалению, parentViewController
только для чтения, или вы так думаете. Его установка в любом случае с помощью KVC решит большинство проблем, и Apple, похоже, не возражает, когда вы отправляете в App Store:
[childViewController setValue:self forKey:@"parentViewController"];