2014-10-02 2 views
5

Привет, я новичок в iOS app dev. До сих пор я занимался только учебными материалами, которые охватывали приложения с помощью навигационных баров или панелей вкладок. Теперь я хочу сделать приложение, объединяющее оба.Какой будет подходящий пример раскадровки, сочетающий навигационные бары и панели вкладок в одном приложении?

Итак, скажем, у меня есть приложение с панелью вкладок внизу с двумя вкладками: друзьями и врагами. На каждой вкладке я планирую иметь бегущий список того, кто мои друзья и враги, поэтому ему потребуется кнопка addPerson на панели навигации каждой вкладки.

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

У меня возникли проблемы с концепцией того, как мой навигационный контроллер (2 навигационных контроллера теперь?) Будет работать в более сложном приложении.

+0

Я не использую раскадровку в своем приложении, но у меня есть контроллер tab/nav. У меня есть контроллер табуляции в качестве корня, а затем навигационный контроллер внутри каждой вкладки (ну, вкладки, которые в ней нуждаются). У меня есть отдельный файл xib для каждой вкладки. –

ответ

8

Вот как настроить его в своей раскадровке. Основным контроллером является TabBarController. Каждый пункт TabBarController имеет свой собственный NavigationController:

enter image description here

Вы, вероятно, хотите использовать TableViewController для ваших списков. Здесь я показал TableViewController как rootViewController NavigationController.

Быстрый способ построить это, чтобы удалить все в Раскадровке, а затем перетащить два TableViewControllers, поместив их прямо над другим. Выберите оба путем перетаскивания контура вокруг них обоих, а затем в меню выберите Editor->Embed In->Tab Bar Controller. Затем поочередно выберите каждый TableViewController и выберите Editor->Embed In->Navigation Controller.

+1

спасибо за четкий ответ. для любых noobs в будущем, убедитесь, что на контроллере панели вкладок установлен «контроллер начального представления». он автоматически отменяется, если вы удаляете все в раскадровке – stanley

0

Если вы хотите установить заголовок динамически, используйте эту функцию из вашего UITabBar делегата:

func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool { 
    self.title = viewController.title 
    print("Should select viewController: \(viewController.title) ?") 
    return true; 
} 

Тогда просто установить viewControllers title в контроллере представления, как вы обычно делаете с UINavigationBar.

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