1

デリゲートに2つのタブコントローラーがあり、必要に応じてそれらを切り替えたいと思います。RootControllerがデフォルトで表示され、使用している別のクラスのsecondControllerを表示したい場合は、

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

問題は、同じ方法を使用して戻ろうとしているときです。不正なアクセスの例外によるクラッシュ...

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

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

4

1 に答える 1

2

スーパービューからrootControllerを削除しないでください。その行を削除します

[appDelegate.rootController.view removeFromSuperview]; 

rootControllerに戻りたい場合は、次の行を追加するだけです。

myAppDelegate *appDelegate = (myAppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate.secondController.view removeFromSuperview];
于 2012-04-28T19:05:16.880 に答える