2012-01-26 2 views
0

Я новичок в разработке приложений для iPhone. Я очень смущен понятиями представлений и контроллеров представлений.Загрузка UIViewController из стека

Мой вопрос заключается в следующем:

У меня есть UIViewController. Для целей примера, назовем это A.

От этого загружается контроллер другого вида B с использованием presentModalViewController.

На presentModalViewcontroller Я нажимаю еще один контроллер вида C. С этого контроллера просмотра я хочу загрузить первый упомянутый контроллер вида A. Я читал, что эти взгляды расположены в стопках. Однако я не уверен, как это сделать.

Как загрузить такой же контроллер вида A в этом случае?

+0

Это зависит от того, какая версия Xcode вы используете. Если вы используете Xcode 4, вы можете использовать Storyboards - http://developer.apple.com/library/IOs/#documentation/ToolsLanguages/Conceptual/Xcode4UserGuide/InterfaceBuilder/InterfaceBuilder.html#//apple_ref/doc/uid/ TP40010215-CH6-SW55 – D3vtr0n

ответ

1

Используйте метод -[UIViewController presentingViewController] на C:

UIViewController *A = C.presentingViewController; 

Это возвращает контроллер представления, пославшего presentModalViewController:animated:. Если вы хотите предоставить информацию обратно до A, я бы выбрал делегацию, но это тоже работает.


Если ваш вопрос заключается в том, чтобы вернуться к A (т.е. отклонить модальный контроллер представления), используйте:

UIViewController *A = C.presentingViewController; 
[A dismissModalViewControllerAnimated:YES]; 
+0

Непонятно, с первой частью вашего ответа. –

+0

В первой части моего ответа показано, как вернуть указатель на 'A', чтобы вы могли отправлять ему сообщения. –

0

Я бы сказал, что вам нужно палить вид контроллеров C и B чтобы вернуться к A. Если вы представляете A сверху B и C, то они могут снова запустить B сверху, и, прежде чем вы это знаете, у вас есть огромный стек повторных просмотров друг на друга.

+0

Точно такая ситуация, в которой я сейчас. Таким образом, здесь появляется только B и C. –

+0

Чтобы остановить вас в кругах, да. – Darren

+0

B представляет собоймодельный контроллер, а c - диспетчер представлений. Так какой должен быть мой код. –

0

Вы должны использовать UINavigationController нажать UIViewControllers