Доступ к TabBarController из класса, который его не создавал?

#iphone #objective-c #uitabbarcontroller

#iPhone #objective-c #uitabbarcontroller

Вопрос:

Я разрабатываю приложение для iPhone, в котором первое, что видит конечный пользователь, — это «домашний» экран с пятью UIButtons. При нажатии на любую из этих кнопок они переходят к представлению контроллера панели вкладок с пятью вкладками внизу, соответствующими каждой из UIButtons на (сейчас) предыдущем начальном экране.

В настоящее время я создаю свой контроллер панели вкладок в делегате моего приложения и загружаю контроллер домашнего просмотра в том же месте.

Но я не могу заставить UIButtons в контроллере домашнего просмотра работать. Я вызываю разные вкладки следующим образом:

 - (void) homeBtnSelect:(UIButton *)button {
    if (button == button1) {
    self.tabBarController.selectedIndex = 0;
    }
    if (button == button2) {
        self.tabBarController.selectedIndex = 1;
    }
    //etc etc...
}
  

Я предполагаю, что мне нужно будет загрузить TabBarController в контроллер домашнего просмотра. Но я не знаю, как это сделать. Кто-нибудь может помочь?

При необходимости я могу предоставить больше кода. Заранее спасибо!

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

1. Вызывается ли вы homeBtnSelect: ?

2. реализовали ли вы делегат для TabBarController …. при изменении TabBarController.SelectedIndex вам нужно будет самостоятельно обработать делегат ……. что еще вы делаете для изменения вкладки?

3. Нет. Что вы подразумеваете под «обработкой делегата»?

4. homeBtnSelect действительно вызывается. Я тестировал с помощью NSLog. 🙂

5. @property (неатомный, назначить) UIViewController *selectedViewController ….. установите этот ViewController ….. вместо установки SelectedIndex …..

Ответ №1:

Чтобы выбрать конкретное, viewController вам нужно установить selectedViewController свойство ….. вы можете сделать это, получив viewcontroller из tabBarController.viewControllers массива ….. и затем установив selectedViewController свойство…….