#iphone #objective-c #uiviewcontroller #presentmodalviewcontroller
#iPhone #objective-c #uiviewcontroller #presentmodalviewcontroller
Вопрос:
я разрабатываю приложение для iphone, и я использую
[self presentModalViewController:aViewControllerInitializateBefore animated:YES];
Можете ли вы сказать мне, что происходит с текущим ViewController, когда я использую это?
Ответ №1:
Текущий контроллер представления остается «под» контроллером модального представления и снова появится при вызове
- (void)dismissModalViewControllerAnimated:(BOOL)animated
либо в модальном представлении, либо в родительском / представляющем контроллере представления (поскольку представление родительского / представляющего контроллера представления больше не отображается, его представление может быть выгружено, когда системе требуется память, и перезагружено при отклонении).
Из документации этого метода:
Родительский контроллер представления отвечает за отклонение контроллера модального представления, который он представил с использованием метода presentModalViewController: animated: . Однако, если вы вызываете этот метод на самом контроллере модального представления, контроллер модального представления автоматически пересылает сообщение своему родительскому контроллеру представления.
Если вы представляете несколько контроллеров модального представления последовательно и, таким образом, создаете стек контроллеров модального представления, вызов этого метода на контроллере представления ниже в стеке отключает его непосредственный дочерний контроллер представления и все контроллеры представления выше этого дочернего элемента в стеке. Когда это происходит, анимированным образом отключается только самый верхний вид; все промежуточные контроллеры просмотра просто удаляются из стека. Самый верхний вид отклоняется с использованием его стиля модального перехода, который может отличаться от стилей, используемых другими контроллерами просмотра, расположенными ниже в стеке.
Также обратите внимание на изменение в iOS 5
До iOS 5.0, если у представления не было родительского контроллера представления и оно представлялось модально, возвращался контроллер представления, который его представлял. Это больше не так. Вы можете получить контроллер представления представления, используя свойство presentingViewController.
Комментарии:
1. понятно! Спасибо! Можете ли вы подсказать мне способ динамической загрузки uiviewcontroller без необходимости возвращаться к представлению, которое вызвало текущий? 🙂 я надеюсь, что также сформировал ответ
2. У вас нет «обязанности» возвращаться к текущему, вы можете просто никогда не вызывать метод dismiss. Или вы можете использовать UINavigationController для запуска UIViewControllers (есть несколько руководств по этому вопросу, если вы посмотрите их в Google).
3. если я не вызываю dismiss.. и я всегда использую presentmodalviewcontroller для перехода с uiviewcontroller правильно? без вызова anytime отклонить
4. Лучше использовать UINavigationController для работы с иерархиями UIViewController, но вы также можете накладывать контроллеры модальных представлений друг на друга.
5. Проблема в том, что мое приложение не является приложением, основанным на представлении навигации, но у меня есть некоторый viewcontroller для динамического отображения, НАПРИМЕР: Main-> View1 или View 2. из одного из них -> View 3-> View 4 или View5 или View 6. Из View 6 -> go View 1. Из View 4 перейдите к View 2 и т.д… Что это за приложение? что я могу использовать?