UITabBar - setItems:アニメーション:クラッシュ
-
26-09-2019 - |
質問
だから私は、インターフェイスビルダーで作成されたUITabViewコントローラーを持っています。 UITabBarItemのタイトルと画像のプロパティはIBに設定しました。タブバーコントローラオブジェクトはXIBに存在し、必要なすべての接続がなされます。私は、このような
のように簡単なコマンドを呼び出すことができますよ[tabBarController setSelectedIndex:1]。
すべてが正常に動作しますが、私は「アイテムのプロパティを設定すると、私がクラッシュします。たぶん私はメモリ管理の問題が発生したのでしょうか?
ここでクラッシュ・コードは次のとおりです。
NSMutableArray *modifiedItems = [[tabBarController.tabBar items] mutableCopy];
[modifiedItems removeObjectAtIndex:2];
NSArray *newItems = [[NSArray alloc] initWithArray:modifiedItems];
-->[tabBarController.tabBar setItems:newItems animated:NO];
の *キャッチされない例外により「NSInternalInconsistencyException」にアプリを終了、理由:「直接タブバーコントローラによって管理さタブバーが許可されていない変更」 * の最初のスローでのコールスタックます:
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'
私にNSArrayとNSMutableArrayの罰金、それらが機能UITabBarのまっすぐに来た考慮されているように見えます。これは、2つの3つのオブジェクトを、返されました。私はちょうどここに愚かな何かを見下ろすよ願っています。すべてのアイデアは、私は本当に感謝しています。
解決
例外メッセージが間違っている正確に何を伝えます:
「タブバーコントローラによって管理される直接修正するタブバーが許可されていません。」
の代わりにタブバーコントローラのviewControllers
プロパティを設定します。
他のヒント
NSMutableArray *viewControllersCopy = [[tabBarController viewControllers] mutableCopy];
[viewControllersCopy removeObjectAtIndex:2];
NSArray *modifiedViewControllers = [[NSArray alloc] initWithArray:viewControllersCopy];
[tabBarController setViewControllers:modifiedViewControllers animated:NO];
あなたはそのように行うことができます -
tabBarController.selectedIndex = 1; // set index according to your requirement
所属していません StackOverflow