Это должно быть так просто ... но что-то пошло не так.
Моя установка выглядит следующим образом:
MainViewController
Tab Bar Controller
4 tabs, each of which loads WebViewController
Мой AppDelegate содержит ivar, tabBarController, который подключен кконтроллер панели вкладок (все это было настроено в Интерфейсном Разработчике).Крайняя левая вкладка помечена как «выбранная» в IB.
В методе viewWillAppear в WebViewController мне нужно знать, какая вкладка была только что выбрана, чтобы я мог загрузить правильный URL.Я делаю это путем включения appDelegate.tabBarController.selectedIndex.
Когда приложение запускается впервые и выбирается крайняя левая вкладка, selectedIndex представляет собой большое значение мусора.После этого я получаю значения от 0 до 3, как и должно быть, но они находятся в случайном порядке.И не только это, но каждая вкладка, к которой я прикасаюсь, каждый раз показывает разные значения.
Это приложение чрезвычайно просто сейчас, и я не могу представить, что я мог бы сделать, чтобы все пошлоэто неправильно.
Кто-нибудь видел (и, надеюсь, решил) это поведение?
Обновление: у нас есть запрос на код.Здесь не на что смотреть.
Контроллер панели вкладок загружается в applicationDidFinishLaunching:
[self.mainViewController view]; //force nib to load
[self.window addSubview:self.mainViewController.tabBarController.view]
В настоящее время в MainViewController.m нет никакого кода, кроме как для синтеза и выпуска tabBarController.1023 *
От WebVewController.m:
- (void)viewWillAppear:(BOOL)_animation {
[super viewWillAppear:_animation];
NSURL *url;
switch([S_UIDelegate mainViewController].tabBarController.selectedIndex) {
case 0: url = [NSURL URLWithString:@"http://www.cnn.com"];
break;
case 1: url = [NSURL URLWithString:@"http://www.facebook.com"];
break;
case 2: url = [NSURL URLWithString:@"http://www.twitter.com"];
break;
case 3: url = [NSURL URLWithString:@"http://www.google.com"];
break;
default: url = [NSURL URLWithString:@"http://www.msnbc.com"];
}
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webView loadRequest:request];
}
Здесь я вижу случайные значения.Кстати, S_UIDelegate - это просто макрос, который возвращает указатель на делегат приложения.Я использую чужой шаблон приложения, и он большой поклонник #define, чтобы сэкономить на наборе текста.