0

カスタム ビュー コントローラーを UITabBarController に追加すると、私の iOS 6 アプリケーションが最近クラッシュし始めました。

私の AppDelegate にはパブリック プロパティがあります

@property (readwrite, strong) UITabBarController *TabBarController;
@property (readwrite, strong) ViewControllerTypeA *ViewControllerA;  //extends UIViewController Class
@property (readwrite, strong) ViewControllerTypeB *ViewControllerB;  //extends UIViewController Class
@property (readwrite, strong) ViewControllerTypeC *ViewControllerC;  //extends UIViewController Class

最初に、タブ バー コントローラーを作成し、これにビュー コントローラーを追加します。

- (void)InitializeTabBar {

[self setTabBarController:[[UITabBarController alloc] init]];
UITabBarItem *Tab1 = [[UITabBarItem alloc] init];
UITabBarItem *Tab1 = [[UITabBarItem alloc] init];
UITabBarItem *Tab2 = [[UITabBarItem alloc] init];

[self setViewControllerA:[[ViewControllerTypeA alloc] init]];
[self setViewControllerB:[[ViewControllerTypeB alloc] init]];
[self setViewControllerC:[[ViewControllerTypeC alloc] init]];

[[self ViewControllerA] setTabBarItem:Tab1];
[[self ViewControllerB] setTabBarItem:Tab2];
[[self ViewControllerC] setTabBarItem:Tab3];

[[self TabBarController] setViewControllers:@[[self ViewControllerA],[self ViewControllerB],[self ViewControllerC]] animated:NO];

}

そして、最後の行でエラーが発生してクラッシュします。

キャッチされていない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。

ただし、代わりにデフォルトの UIViewController クラスを挿入すると、次のようになります。

[[self TabBarController] setViewControllers:@[[[UIViewController alloc] init],[[UIViewController alloc] init],[[UIViewController alloc] init]] animated:NO];

その後、すべてが完全にロードされます。私は何を間違っていますか?

4

2 に答える 2

0

うわー、最終的には、UINavigationBar でカスタム フォントを使用する必要がありました。明らかに、フォントが設定される前に NavController を初期化しようとしていたため、ビューにアクセスしようとするとすぐにクラッシュしました。クレイジー。助けてくれてありがとう!

于 2013-09-21T00:01:10.860 に答える
0

問題はおそらく、nil オブジェクトをディクショナリに挿入しようとしていることです。ここにはディクショナリがないため、最初のビュー コントローラのサイクル内にある可能性があります。

于 2013-09-20T05:58:41.593 に答える