Добавление UINavigationController в приложение с вкладками - PullRequest
0 голосов
/ 24 февраля 2010

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

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

Кроме того, этот фрагмент кода из документации кажется тревожным:

- (void)applicationDidFinishLaunching:(UIApplication *)application {
[window addSubview:myNavigationController.view];
 }

выше взято из яблочной документации "Программирование ViewController для iPhoneOS"

не будет ли это загружаться и немедленно отображать UINavigationView?

Одна проблема - я не хочу отображать navView сразу. navController / stack является вторичной вкладкой. Итак, как и где я могу реализовать свой navController (прямо сейчас у меня есть его в моем делегате (что я считаю правильным)? Я смог загрузить базовый UInavigationController с панелью навигации и пустым представлением, --minus пользовательское представление контента через конструктор интерфейса, но я не знаю, как заполнить пользовательские представления контента.

Надеюсь, это имеет смысл.

Любая помощь будет оценена,

Ник

1 Ответ

1 голос
/ 24 февраля 2010

Первое, что нужно понять, это как работает UINavigationController. Это выдвигает UIViewControllers, а не представления. Поэтому, когда что-то происходит на вашей второй вкладке (где живет UINavigationController), вы помещаете UIViewController в стек.

Обычно это делается в:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;

Что является частью протокола UITableViewDelegate.

Итак, когда вызывается tableView: didSelectRowAtIndexPath, вам необходимо выяснить, какой UIViewController помещать в стек. Вы можете загрузить этот View Controller из пера или создать его программно. Так как вы чувствуете себя комфортно с IB, я бы посоветовал загрузить его из пера.

Я бы не беспокоился о пустяках типа "где я должен создать экземпляр моего UINavigationController?" прямо сейчас. Во-первых, заставить его работать. Тогда беспокойтесь о том, куда вещи «должны» пойти.

Возможно, лучше всего заставить UINavigationController работать в отдельном проекте, а затем сложить его в свой основной проект. Это позволяет игнорировать множество мелких деталей, когда вы фокусируете внимание на навигационном контроллере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...