2010-07-14 6 views
1

Я пытаюсь реализовать контроллер навигации с некоторыми иерархическими представлениями. Я хочу использовать обычный UIViewController для представления вариантов для сверления, я не хочу использовать панель навигации - я хочу иметь свои собственные пользовательские кнопки для возврата к уровню.Как вытащить контроллер из стека навигации без использования навигационной панели

Я вижу примеры, как:

[[self navigationController] pushViewController:nextViewController animated:YES]; 

и мои вопросы таковы: Является ли navigationController свойство всех UIViewControllers? Могу ли я ссылаться на self.navigationController независимо от вида, находящегося в стеке? Если у меня есть произвольное представление, могу ли я иметь действие кнопки, которое содержит что-то вроде [self.navigationController popToRootViewController animated:YES];

Для каждого представления, которое я представляю, в зависимости от ситуации для возврата к предыдущему виду или корневому представлению потребуется каждая кнопка. Я хочу создать эту кнопку в каждом контроллере представления и контролировать, какой вид в стеке он возвращается. Я на правильном пути?

ответ

7

Является ли navigationController собственностью всех UIViewControllers?

Да.

Могу ли я ссылаться на self.navigationController независимо от вида, находящегося в стеке?

Каждый UIViewController на стеке UINavigationController «s вернет UINavigationController объект при вызове navigationController на него.

Если я в произвольной точке зрения, я могу иметь действие по нажатию кнопки, которая содержит что-то вроде [self.navigationController popToRootViewControllerAnimated:YES];

Да. popToRootViewControllerAnimated: приведет пользователя к корню UIViewController для UINavigationController, и вы можете использовать [self.navigationController popViewControllerAnimated:YES];, чтобы просто выскочить сверху UIViewController. Этот последний делает то же самое, что и постукивание BackUIBarButtonItem.

Я нахожусь на правильном пути?

Да :)

+0

Спасибо! Я все еще на крутой части кривой обучения, но каждый шаг очень полезен. Несколько месяцев назад я смотрел этот материал навигационного контроллера, и теперь он выглядит (справедливо) ясным. Без переполнения стека я бы давно отказался. Хороший, ясный ответ! – Steve

+0

Верьте или нет, но только 4 месяца назад я не знал, что первое, что касается разработки C, Objective-C, Cocoa Touch или iPhone в целом :) Если вы просто действительно поставили себя на изучение (прочитайте несколько книги, создайте приложение самостоятельно с нуля), прежде чем вы это узнаете, вы находитесь в Stack Overflow, отвечая на вопросы других людей;) –

+0

Я сейчас работаю над разработкой iPhone 3 и получаю следующую игру. Это, кстати, отлично работает. Я могу подтолкнуть новый контроллер в стек и отбросить его, и избавиться от панели навигации.Мои две новые проблемы: когда я нажимаю новый контроллер, я сразу же привношу модальный вид, чтобы сделать выбор - как мне получить базовое представление, чтобы дождаться появления модальности до того, как он станет видимым (вы можете видеть, как он приближается к левая, как модальная скользящая вверх). И затем, как мне получить эту информацию о выборе из модальной системы обратно в базовый контроллер? – Steve

Смежные вопросы