dismissModalViewControllerAnimated не работает - PullRequest
2 голосов
/ 03 февраля 2011

У меня есть UITabbarController с UINavigationController.Представление в NavigationController представляет MVC (AddClockNavigationController).Этот MVC имеет перо с видом и UINavigationController.NavigationController.view добавляется в качестве подпредставления для представления MVC.

NavigationController в моем MVC имеет две кнопки: «Отмена» и «Готово».При нажатии любой из них MVC должен быть отклонен.Действия IBA этих кнопок находятся в представлении UINavigationController (AddClockViewController), но при каждом нажатии их MVC не исчезает.Если я положу действия в MVC, он исчезнет.Если я помещаю функцию в свой MVC и вызываю ее из моего viewController, используя [self.parentViewController myFunction], она не исчезает.

Как я могу заставить его исчезнуть из моего поля зрения?

Полагаю, мое объяснение довольно грязное, но я надеюсь, вы понимаете это.Вид из моего IB: enter image description here

С уважением,Пол Пилен

Редактировать Я пробовал это с [self dismissModalViewControllerAnimated:YES];, [self.parentViewController dismissModalViewControllerAnimated:YES];, [self.navigationController dismissModalViewControllerAnimated:YES];, [self.parentViewController.navigationController dismissModalViewControllerAnimated:YES]; и, как указано, с функцией вparentView отклонил это.Ничего не работает.

Ответы [ 2 ]

7 голосов
/ 03 февраля 2011

Когда один контроллер представления представляет другой, он становится родительским контроллером представления.Поэтому, если вы хотите отклонить ваш контроллер модального представления, вам нужно выбрать:

  1. из вызова контроллера родительского представления

    [self dismissModalViewControllerAnimated: YES];

ИЛИ

  1. из вызова контроллера модального представления

    [self.parentViewController dismissModalViewControllerAnimated: YES];

На самом деле вам не нужен навигационный контроллер (потому что вы не нажимаете и не выдвигаете никакие контроллеры представления).Просто добавьте UINavigationBar к вашему MVC и поместите на него кнопки.Затем добавьте к ним действия и сделайте выбор №2.Ваш код не работает, потому что у контроллера навигации нет родителя, так как он не был представлен как модальный.

4 голосов
/ 28 июня 2012

Одна из ситуаций заключается в том, что dismiss {Modal} ViewControllerAnimated вызывается до вызова представленного viewController viewDidAppear.В такой ситуации представленный представлен с анимацией == ДА.и до того, как представленное полностью появилось, его уволили.

Чтобы исправить это, вам нужно проверить в момент времени для закрытия, проверить, вызван ли viewDidAppear, если нет, отложить отклонение в - viewDidAppear.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...