2013-02-18 2 views
0

Я потратил хороший час на изучение этой проблемы и не могу понять ее, несмотря на то, В принципе, у меня есть TabBarController (TBC) с несколькими вкладками, каждый из которых связан с UIViewController. В моем приложении I также есть другие UIViewControllers, которые совсем не являются частью TBC. У меня есть кнопка на одном из этих не-TBC UIViewControllers, которые при нажатии должны не только перейти к TBC, но и к индексу отдельной вкладки, который не равен 0.Как выбрать конкретную вкладку в TabBarController из UIViewController, КОТОРЫЙ НЕ является одной из вкладок?

Я нашел много людей, говорящих: «О, просто ссылка self.tabBarController ... blah blah blah ", но сам не работает для меня, когда я нахожусь в одном из моих не-TBC UIViewControllers.

Я нашел следующее, что, как я думал, может работать, но не сделал. Код получает ссылку на TBC, который мне нужен, назначает ненулевой индекс в ожидании его отображения, а затем выполняет segue. К сожалению, я продолжаю видеть только первую вкладку после segue.

// doesn't work...  
UITabBarController *TBC = [self.storyboard instantiateViewControllerWithIdentifier:@"TBC"]; 
TBC.selectedIndex = 1; 
[self performSegueWithIdentifier:@"goTBC" sender:nil]; 

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

ответ

0

Я решил решить эту проблему, создав переменную int в своем AppDelegate, чтобы отслеживать, какой индекс вкладки должен отображаться по умолчанию равным 0. Затем в моем методе метода TabBarControllerWillAppear я установил selectIndex в индекс индексирования, который я сохранил в AppDelegate. Это позаботится об этой проблеме, хотя я не думаю, что это самое чистое.

- (void)viewWillAppear:(BOOL)animated 
{ 
    // Assume ad is your app delegate... 
    // Assume navToIndex is the int I referenced above in app delegate 
    self.selectedIndex = ad.navToIndex; 
} 
Смежные вопросы