Увольнение ModalView здесь не работает - PullRequest
1 голос
/ 25 июля 2011

Итак, у меня есть tabBarController в качестве модального вида, и он хорошо отображается.Когда я нажимаю на некоторые вкладки, представления загружаются правильно.Я хочу отклонить modalView, когда я нажимаю tabBarController.selectedIndex ==4

Поэтому я пишу в viewDidLoad, а также в viewWillAppear этого контроллера представления пытаюсь dismissModalViewController, и он не работает.1007 *

Я пытался

[self.parentViewController dismissModalViewControllerAnimated:YES];

      // ... And also //

[self dismissModalViewControllerAnimated:YES];

Может кто-нибудь указать, почему это не работает?

Ответы [ 3 ]

1 голос
/ 25 июля 2011

Я думаю, что 4-й контроллер представления (контроллера панели вкладок) пытается быть отклоненным строкой

[self.parentViewController dismissModalViewControllerAnimated:YES];

Поскольку этот 4-й контроллер представления не был представлен ни одним контроллером, это не будет работать.1004 *

И он отклоняет свой модальный контроллер вида строкой

[self dismissModalViewControllerAnimated:YES];

Так как этот 4-й контроллер представления не представил никакого контроллера представления, это снова не должно работать.Вы хотите отклонить контроллер панели вкладок, а не его контроллер 4-го представления.

По сути, вы можете получить ссылку на контроллер панели вкладок из контроллера 4-го представления.Как, [yourFourthViewController.tabBarController.parentViewController dismissModalViewControllerAnimated:YES];

Я предполагаю это, не пытаясь на самом деле.Дайте мне знать, если это работает.

1 голос
/ 25 июля 2011

Все, что вам нужно сделать, это передать ссылку на модально представленный VC, указывающий на VC, который представит его модально.

Определите слабую ссылку как свойство в подклассе UITabBarController и отправьте сообщение, чтобы отклонить его при необходимости.

Например, используя свойство с именем mainViewController:

MySubclass *tbController = [[MySubclass ....];
tbController.mainViewController = self;
[self presentModalViewController:tbController animated:YES];

Тогда в MySubclass определите

@property(assign) UIViewController *mainViewController;

и синтезируйте его, а затем выберите нужную вкладку:

[self.mainViewController dismissModalViewControllerAnimated:YES];
0 голосов
/ 25 июля 2011

Если у вас есть UINavigationController в качестве родительского контроллера, то для вас будет работать следующая строка:

[self dismissModalViewControllerAnimated: YES];

Но здесь я думаю, что UIViewController - этородительский контроллер вместо UINavigationController.Итак, вы можете сделать одну вещь, когда присутствуетModalViewController.

if(objView == nil)
    objView = [[YourViewController alloc] initWithNibName:@"YourViewController" bundle:nil];

UINavigationController *navigationController1 = [[UINavigationController alloc] initWithRootViewController:objView];

[self presentModalViewController:navigationController1 animated:YES];

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

...