これは多少の疑問のように聞こえるかもしれません。私は検索しましたが、ほとんど見つけられませんでした。なぜなら、私は適切な検索用語を見つけることができないからです。IOSのルートビューに戻る
私が何をしたいのかここでです:アプリケーションがビューAで始まる
ビューAはビューBを起動し、ビューBの発売はC.
は、ビューのために彼らの方法です見ますCを却下することなく直接Aに戻り、Bを公開する。例えば、メインメニューボタン。
これは多少の疑問のように聞こえるかもしれません。私は検索しましたが、ほとんど見つけられませんでした。なぜなら、私は適切な検索用語を見つけることができないからです。IOSのルートビューに戻る
私が何をしたいのかここでです:アプリケーションがビューAで始まる
ビューAはビューBを起動し、ビューBの発売はC.
は、ビューのために彼らの方法です見ますCを却下することなく直接Aに戻り、Bを公開する。例えば、メインメニューボタン。
私は私の問題の解決策を発見しました。その少し汚れている(と私はおそらくそれのために炎の中に撃たれる)が、テストの下で非常にうまく動作し、実装するのは非常に迅速です。ここで私はそれをやった。
私のアプリでは、というGlobalVarsというシングルトンクラスがあります(これは、さまざまなグローバル設定を保存するために使用します)。このクラスは、というhome_pressedというブール値と関連アクセサ(合成による)を保持します。必要に応じて、この値をアプリケーション代理人に保存することもできます。
メインメニューボタン付きのすべてのビューコントローラで、homePressed IBActionメソッドにボタンを配線します。最初にグローバルhomePressedブール値をYESに設定してから、通常の方法でビューコントローラを終了しますが、NOのアニメーションを設定します。次のように私は(ビュー再表示されたときに呼び出される)viewDidAppear方法を実装するメインメニュー以外のすべてのビューコントローラで
-(IBAction) homePressed: (id) sender
{
[GlobalVars _instance].homePressed = YES;
[self dismissModalViewControllerAnimated: NO];
}//end homePressed
。 APPのルートあるはmainMenuビューコントローラで
-(void) viewDidAppear: (Bool) animated
{
if ([GlobalVars _instance].homePressed == YES)
{
[self dismissModalViewController: NO];
}
else
{
//put normal view did appear code here/
}
}//end viewDidAppead
、Iグローバルを
-(void) viewDidAppear: (Bool) animated
{
if ([GlobalVars _instance].homePressed == YES)
{
[GlobalVars _instance].homePressed == NO;
}
else
{
//put normal view did appear code here/
}
}//end viewDidAppear
を次のようにメソッドを表示されました、そのビューにNOにブール値をhomePressed設定
これで、私のアプリのルートメインメニューに、チェーンのさらに下のビューから戻ることができます。
私はこの方法を避けることを望んでいましたが、私のアプリを再実装するよりも優れていました。これは、UINavigationControllerソリューションを使いたい場合にはどうしたらいいでしょうか。
シンプルで、私の9ビューアプリでコードに10分かかりました。 :)
最終的な質問が1つありますが、私の解決策はHIGで問題ありませんか?
UINavigationControllerがある場合はpopToRootViewControllerAnimated:
に電話をかけることができます。 NO
を指定してアニメートすると、最初にBを表示せずにルートに戻るだけです。
私は[self.navigationController popToRootViewControllerAnimated:NO]を試みています。メインメニューボタンによって起動されたIBActionイベントスタブに表示されます。それは効果がないように見えますが、エラーを発生させることなく実行されます。 –
OK、最初の質問UINavigationControllerがあり、自分のビューコントローラを介してビューをスタックにプッシュしますか?すべてのView ControllerにはnavigationControllerプロパティがありますが、nilに設定されている可能性があります。 –
http://developer.apple.com/library/ios/#documentation/uikit/reference/UINavigationController_Class/Reference/Reference.htmlを参照して、これが再現しようとしている効果であるかどうかを確認してください。 –