2010-11-19 18 views
1

Bu yüzden arayüz oluşturucuda oluşturulmuş bir UITabView Denetleyicisine sahibim. UITabBarItem'in başlık ve görüntü özellikleri IB'de belirlenmiştir. Xib'de bir Tab Bar Controller nesnesi bulunur ve gerekli tüm bağlantılar yapılır.UITabBar - setItems: canlandırılmış: Crashes

[tabBarController setSelectedIndex: 1] gibi basit komutları arayabiliyorum;

Her şey iyi çalışıyor, ancak 'items' özelliğini ayarladığımda kilitleniyor. Belki bir bellek yönetim problemim var?

NSMutableArray *modifiedItems = [[tabBarController.tabBar items] mutableCopy]; 
[modifiedItems removeObjectAtIndex:2]; 
NSArray *newItems = [[NSArray alloc] initWithArray:modifiedItems]; 
-->[tabBarController.tabBar setItems:newItems animated:NO]; 

* Uygulamayı Sonlandırma nedeniyle yakalanmamış istisna 'NSInternalInconsistencyException', nedeni için: Burada

kilitlenme kodudur. 'Doğrudan izin verilmeyen bir sekme çubuğu denetleyicisi tarafından yönetilen bir sekme çubuğunu değiştirme' İlk atımlık * Çağrı yığını:

0 CoreFoundation      0x02b9bb99 __exceptionPreprocess + 185 
1 libobjc.A.dylib      0x02ceb40e objc_exception_throw + 47 
2 CoreFoundation      0x02b54238 +[NSException raise:format:arguments:] + 136 
3 CoreFoundation      0x02b541aa +[NSException raise:format:] + 58 
4 UIKit        0x005f7019 -[UITabBar setItems:animated:] + 2037 
5 Zag Map        0x00003422 -[ZagMapAppDelegate iPodTouchRemoval] + 270 
6 Zag Map        0x00002eea -[ZagMapAppDelegate applicationDidFinishLaunching:] + 551 
7 UIKit        0x003faf80 -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1252 
8 UIKit        0x003fd3b0 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 346 
9 UIKit        0x004073ec -[UIApplication handleEvent:withNewEvent:] + 1958 
10 UIKit        0x003ffb3c -[UIApplication sendEvent:] + 71 
11 UIKit        0x004049bf _UIApplicationHandleEvent + 7672 
12 GraphicsServices     0x03357822 PurpleEventCallback + 1550 
13 CoreFoundation      0x02b7cff4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52 
14 CoreFoundation      0x02add807 __CFRunLoopDoSource1 + 215 
15 CoreFoundation      0x02adaa93 __CFRunLoopRun + 979 
16 CoreFoundation      0x02ada350 CFRunLoopRunSpecific + 208 
17 CoreFoundation      0x02ada271 CFRunLoopRunInMode + 97 
18 UIKit        0x003fcc6d -[UIApplication _run] + 625 
19 UIKit        0x00408af2 UIApplicationMain + 1160 
20 Zag Map        0x00002ca0 main + 102 
21 Zag Map        0x00002c31 start + 53 
    terminate called after throwing an instance of 'NSException' 

Benim NSArray ve NSMutableArray onlar işleyen UITabBar düz bir şekilde geldi dikkate ince görünmektedir. Üç nesne, sonra iki tane döndürdü. Umarım burada aptalca bir şey izliyorum. Gerçekten takdir edeceğim herhangi bir fikir.

+0

gibi yapabilir? Bu gerçekten bence yardımcı olur. – tia

+0

"Kesme noktaları" nı ve ardından "oluştur ve hata ayıkla" yı tıklayın. Düştüğü zaman, daha fazla bilgi ile neyin yanlış gittiğini anlatacak daha ayrıntılı bir hata olacaktır. –

cevap

2

istisna mesajı yanlış tam olarak ne söyler:

'Doğrudan bir sekme çubuğu denetleyicisi tarafından yönetilen bir sekme çubuğunu değiştirme izin verilmez.'

Bunun yerine, sekme çubuğu denetleyicisinin viewControllers özelliğini ayarlayın.

+0

Teşekkürler, işe yaradı. Aynı kodun başkaları tarafından başarıyla kullanıldığını görmüştüm. – mosca1337

1
NSMutableArray *viewControllersCopy = [[tabBarController viewControllers] mutableCopy]; 
[viewControllersCopy removeObjectAtIndex:2]; 
NSArray *modifiedViewControllers = [[NSArray alloc] initWithArray:viewControllersCopy]; 
[tabBarController setViewControllers:modifiedViewControllers animated:NO]; 
+0

Teşekkürler çekicilik gibi çalıştı – sairam

0

Sen istisna mesaj iletebilir ki-

tabBarController.selectedIndex = 1; // set index according to your requirement 
İlgili konular