#xcode4 #uitabbarcontroller #ios5
#xcode4 #uitabbarcontroller #ios5
Вопрос:
Перед обновлением моего Xcode с 4.1 до 4.2 следующий код работал нормально с iOS 4.3, но после обновления Xcode и тестирования моего приложения на iPhone с iOS 5 он продолжает сбой при запуске!
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[self.window addSubview:tabController.view];
[[tabController.tabBar.items objectAtIndex:0] setTitle:@"Tab1"];
[[tabController.tabBar.items objectAtIndex:1] setTitle:@"Tab2"];
[[tabController.tabBar.items objectAtIndex:2] setTitle:@"Tab3"];
[[tabController.tabBar.items objectAtIndex:3] setTitle:@"Tab4"];
[[tabController.tabBar.items objectAtIndex:4] setTitle:@"Tab5"];
[[tabController.tabBar.items objectAtIndex:5] setTitle:@"Tab6"];
[[tabController.tabBar.items objectAtIndex:6] setTitle:@"Tab7"];
[[tabController.tabBar.items objectAtIndex:7] setTitle:@"Tab8"];
[[tabController.tabBar.items objectAtIndex:8] setTitle:@"Tab9"];
[self.window makeKeyAndVisible];
return YES;
}
Он выдает следующую ошибку:
2011-10-15 15:13:31.238 Mobile[2347:707] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 5 beyond bounds [0 .. 4]'
*** First throw call stack:
(0x311138bf 0x382b81e5 0x3106b275 0x336b 0x330e57eb 0x330df3bd 0x330ad921 0x330ad3bf 0x330acd2d 0x33c98e13 0x310e7553 0x310e74f5 0x310e6343 0x310694dd 0x310693a5 0x330de457 0x330db743 0x2acd 0x2a28)
Если я сохраню только первые 5 настроек, это будет работать, но если их больше 5, это приведет к сбою!
Пожалуйста, обратите внимание, что я создаю UITabBarController в IB не программно.
Комментарии:
1. В чем дело, ноль)… Я не вижу, где вы открываете это с чем-либо?
2. Извините, я удалил NSLocalizedString(«Tab1», nil), поэтому я забыл удалить nil 🙂
Ответ №1:
Попробуйте вместо этого получить доступ к массиву ViewControllers на tabController и отредактировать TabItem непосредственно на контроллере представления.
[[tabController.viewControllers objectAtIndex:0].tabBarItem setTitle:@"Tab1"];
Комментарии:
1. Это всего лишь предположение, потому что я не вижу его нигде в документации, но я думаю, что, поскольку вы можете отображать только 5 элементов одновременно, tabController.TabBar.items теперь может быть привязан только к 5 элементам, а в iOS 4 этого не было.
2. Ты гений 🙂 Но есть небольшая поправка: [[[tabController.ViewControllers objectAtIndex:1]TabBarItem]Значение параметра: @»Tab1″]