Я как-то царапал себе голову этим неделю назад, и теперь, когда у меня появился немного больше опыта какао, я чувствую, что имею представление о том, что может происходить.Является ли parentViewController всегда навигационным контроллером?
Я делаю приложение, которое управляется UINavigationController. В AppDelegate я создаю экземпляр этого класса, используя «page 1» в качестве Root View Controller.
UINavigationController *aNavigationController = [[UINavigationController alloc]
initWithRootViewController:page1ViewController];
Теперь вот где у меня проблема. Из «страницы 1» я хотел бы использовать контроллер модального представления, который скользит по интерфейсу, а затем исчезает после того, как пользователь сделал редактирование. Я делаю это с помощью кода, как это, внутри Page1ViewController:
[self presentModalViewController:myModalViewController animated:YES];
Когда модальный View Controller нет, я хочу значение на «Страница 1» меняться в зависимости от того, что вводится пользователем в модальной View Controller. Итак, я написал код, как это, который находится в модальной View Controller:
[self.parentViewController dismissModalViewControllerAnimated:YES];
[self.parentViewController doSomethingPleaseWithSomeData:someData];
Обновление на странице 1, не происходит, и мне потребовалось много времени, чтобы понять, что сообщение «doSomethingPleaseWithSomeData» было не отправляется в Page1ViewController, а контроллер навигации.
Этого всегда следует ожидать при использовании навигационных контроллеров? Возможно, я настроил что-то неправильно? Есть ли простой способ получить доступ к контроллеру просмотра, который я хочу (в данном случае, Page1ViewController).
Выполняет именно то, что я хочу, спасибо! Я новичок в Cocoa, но не MVC. Дело в том, что, будучи веб-разработчиком Java, я почти всегда забываю, что контроллеры в «С» МОГУТ взаимодействовать друг с другом! – bpapa
Хороший ответ, но почему это так? Очевидно, что * не * в том случае, что parentViewController модального представления является навигационным контроллером в любом логическом смысле (page1Controller - это контроллер, запрашивающий модальный дисплей), поэтому почему Cocoa Touch настроил его таким образом? –