2012-04-28 6 views
1

デリゲートに2つのタブコントローラがあり、必要に応じてそれらを切り替えることができます。 RootControllerがデフォルトとして表示され、ときに私は私が同じ方法を使用して戻ってしようとしていたときに2つのコントローラ間のiOSスイッチ

myAppDelegate *appDelegate = (myAppDelegate *)[[UIApplication sharedApplication] delegate]; 
    [appDelegate.window addSubview:appDelegate.secondController.view]; 
    [appDelegate.rootController.view removeFromSuperview]; 

問題は、私が使用して別のクラスからsecondControllerを表示したいと思います。悪いアクセス例外によるクラッシュ...

myAppDelegate *appDelegate = (myAppDelegate *)[[UIApplication sharedApplication] delegate]; 
    [appDelegate.window addSubview:appDelegate.rootController.view]; 
    [appDelegate.secondController.view removeFromSuperview]; 

助けていただければ幸いです。ありがとうございました。

+0

アプリで2 tabbarcontrollarsがありますか? ..またはそれに2つのビューコントローラを持つただ1つのtabbarcontroller? – Shubhank

+0

2つのtabBarControllers! – Jaume

+0

あなたのBOOLのappdidFinishLaunchingメソッドのコードを教えてください..それは、アプリケーションdelegate.mファイルにあるべきです – Shubhank

答えて

2

スーパービューからrootControllerを削除しないでください。そのライン

[appDelegate.rootController.view removeFromSuperview]; 

削除し、あなたが戻ってあなたrootControllerに行きたいときだけ次の行を追加します。

myAppDelegate *appDelegate = (myAppDelegate *)[[UIApplication sharedApplication] delegate]; 
[appDelegate.secondController.view removeFromSuperview]; 
+0

同じ問題がありがとう!私はそれをテストするために私の代理人に空の関数を設定し、問題はスーパービューに関連していないコールバックシングルトンから来ているようです... – Jaume

+0

よく、問題はARCから来た。 appDelegateを保持する必要がないように、一部のクラスでのみ無効にするフラグを設定します。ご協力ありがとうございます – Jaume

関連する問題