presentModalViewController: как взаимодействовать с родителем

Отображение модального ViewController отлично работает:

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:myView];
[self.navigationController presentModalViewController:navController animated:YES];
[navController release];    

В моем модальном представлении у меня есть кнопка навигации, чтобы вернуться в главное меню. Обычно a вызывает [self.navigationController popToViewController:delegate.viewMainmenu animated:YES];, но это невозможно в модальном представлении. Как я могу взаимодействовать с «родителем», чтобы называть его так, как он называет popToViewController?

Большое спасибо!


person Manni    schedule 25.01.2011    source источник
comment
stackoverflow.com/a/8744062/1092219   -  person Himanshu Agnihotri    schedule 05.01.2012


Ответы (2)


используйте свойство parentViewController в вашем модальном vc и вызовите [self.parentViewController rejectModalViewControllerAnimated: YES];

person Max    schedule 25.01.2011
comment
Спасибо! С помощью rejectModalViewController я могу закрыть модальное окно, но как мне перейти в главное меню? - person Manni; 25.01.2011
comment
Ну а если у вас в основном меню есть root vc, то просто сделайте popToRootViewController. Другой вариант: сделайте свое главное меню одноэлементным (потому что обычно оно только одно для каждого приложения), а доступ будет похож на [MainMenu sharedMenu]. Затем вы можете сделать что-то вроде [self.navigationController popToViewController: [MainMenu sharedMenu]] - person Max; 25.01.2011
comment
self.navigationController popToViewController не работает в модальном диалоге, он работает только в родительском. я пытаюсь - person Manni; 25.01.2011
comment
конечно, это не работает :) это потому, что ваш контроллер модального представления не был помещен в стек навигации. 1. закрыть модальный. 2. вызовите поп в своем родителе - person Max; 25.01.2011
comment
или попробуйте self.parentViewController.navigationController popToViewController - person Max; 25.01.2011
comment
ЭТО РАБОТАЛО ДЛЯ МЕНЯ: 1. сохранить parent-navigationController в модальном представлении 2. вызвать [self.parentViewController rejectModalViewControllerAnimated: NO]; в модальном представлении 3. вызов [navParent popToViewController:delegate.viewMainmenu анимированный:YES]; в модальном представлении (navParent — это родительский навигационный контроллер, который я сохранил в представлении) - person Manni; 25.01.2011
comment
Это больше не действует с iOS 5.0, проверьте это: developer.apple.com/library/ios/documentation/UIKit/Reference/ Короче говоря, теперь вам нужно использовать PresentingViewController - person George Penn.; 20.04.2012

Если вы спрашиваете, как закрыть контроллер модального представления, вам нужно, чтобы само модальное представление вызывало:

[self dismissModalViewControllerAnimated:YES];
person Eric    schedule 25.01.2011
comment
Спасибо! Да, rejectModalViewController закрывает модальное представление, но я хочу открыть несколько представлений, чтобы перейти в главное меню. - person Manni; 25.01.2011