Цель C: показать навигационную панель и панель вкладок

#objective-c #uinavigationbar #uitabbar

#objective-c #панель навигации #uitabbar

Вопрос:

Я создаю приложение с UIWebView, UITabBar и несколькими другими представлениями, каждое из которых предназначено для вкладки. Я хочу показать навигационную панель, панель вкладок и представление на одном дыхании. Когда я набираю это:

     -(BOOL) (UIApplication *) application ApplicationDidFinishLaunchingWithOptions: (NSDIctionary *) launchOptions {
[_window addSubView: tabController.view];
[_window addSubView: navController.view];
[self._window makeKeyAndVisible];
return YES;
}
  

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

   -(BOOL) (UIApplication *) application didFinishLaunchingWithOptions: (NSDIctionary *) launchOptions {
    [_window addSubView: navController.view];
    [_window addSubView: tabController.view];
    [self._window makeKeyAndVisible];
    return YES;
    }
  

Я получаю свою панель вкладок с интерактивными вкладками, но панели навигации нет. Я даже не вижу этого.
Итак, моя структура такова:

 -Window:
  -TabBarController:
    -> View1.xib
      -UIWebView
      -UINavigationBar
    -> View3.xib
      -UIWebView
      -UINavigationBar
    -> View3.xib
      -UIWebView
      -UINavigationBar
  

Есть идеи?

Комментарии:

1. ApplicationDidFinishLaunchingWithOptions выглядит неправильно, это псевдокод?

2. Отредактировано, вы были правы, это должно было быть: didFinishLaunchingWithOptions. И это не псевдокод, я использую Xcode 4, в котором есть новые функции, которые встроены по умолчанию.

Ответ №1:

Как правило, вы не можете добавить в окно контроллеры nab и панели вкладок. Обычно структура:

  • Окно
    • TabBarController
    • Контроллер вкладки 1
      • Навигационный контроллер вкладки 1
    • Контроллер вкладки 2
      • NavigationController вкладки 2
    • Контроллер вкладки 3
      • Навигационный контроллер вкладки 3
    • Контроллер вкладки и т.д.
      • Навигационный контроллер вкладки и т.д.

Это позволяет использовать разные контроллеры навигации для разных вкладок. И единую панель вкладок для приложения.

Можно инвертировать структуру и поместить навигационный контроллер поверх нее, а вкладки — где-то ниже. Но это не обычное использование этих компонентов.

Я хочу упомянуть, что вы можете добавить в окно только вид панели вкладок, все остальные виды обрабатываются контроллерами.

Комментарии:

1. Ну, у меня немного другая структура. Однако, когда я пытаюсь сделать то, что вы говорите: у меня есть три других представления, которые автоматически отображаются контроллером панели вкладок, я не кодировал это, но использовал контроллер панели вкладок из Xcode. Итак, я выбрал в построителе интерфейса, чтобы для каждой вкладки контроллер панели вкладок отображал файл .xib, соответствующий вкладке. Однако (все они являются UIWebViews), когда я добавляю панели навигации к каждому файлу .xib, они не отображаются, а отображается только UIWebView. Как это сделать тогда?

2. Итак, моя структура такова: -Window: -TabBarController: -> View1.xib -UIWebView -панель навигации -> View3.xib -UIWebView -панель навигации -> View3.xib -UIWebView -панель навигации

3. Теперь я понимаю, о чем вы говорите. Большое спасибо! Проблема заключалась в том, что я не знал, что могу расширить панель ViewController в Xcode 4. Теперь я могу видеть, как связана каждая часть моего представления, и я могу вручную изменить их положение, как вы сказали. Еще раз спасибо!