0

ナビゲーションスタックには、ナビゲーションスタックにプッシュされた2つのビューコントローラーがあります。その上に、rootviewcontrollerとしてPresentModalViewControllerがあり、さらに2つのviewcontrollerをプッシュします。したがって、ナビゲーションスタックは次のようになります

ViewController

ViewController

rootviewcontrollerとしてのPresentModalViewController

ViewController

ViewController

一番上のビューコントローラーから、ボタンをクリックすると、一番下のビューコントローラーに移動したいと思います。間にあるビューコントローラは、ポップまたは閉じる必要があります。どうしてそれは可能ですか。私は試しましたが、成功dismissModalViewControllerAnimated:popToRootViewControllerAnimated:ませんでした。

4

3 に答える 3

0

これを試してみてくださいこれはうまくいきます

            NSArray *vcs = [self.navigationController viewControllers];
            [self.navigationController popToViewController:[vcs objectAtIndex:[vcs count]-2] animated:YES];
于 2012-06-12T09:45:17.000 に答える
0

popToRootViewControllerAnimatedのを使用する必要がnavigationControllerありますModalViewController。次に、を使用する必要がありますdismissModalViewControllerAnimated。次に、もう一度実行する必要がありますpopToRootViewControllerAnimated

于 2012-06-12T10:10:18.673 に答える
0

この問題を解決するためにデリゲートを使用しました。

Class A.h
@protocol MyDelegateClass
- (void)didLoadHomeView; 


Class B.h
@interface MyViewController : UIViewController<MyHomeViewDelegate>

Class B.m
- (void)didLoadHomeView
{
    [self.navigationController popToRootViewControllerAnimated:YES];
}

Class C.h
@interface MyCurrentViewController : UIViewController
{
    id <MyLoadHomeDelegate> homeDelegate; 
}
    @property (nonatomic,assign) id <MyLoadHomeDelegate>   homeDelegate;

Class C.m
-(IBAction) OnHome:(id)sender{
    [self dismissModalViewControllerAnimated:NO];
    if (self.homeDelegate) {
        [homeDelegate didLoadHomeView];
    }

}

ModalViewController電流である、はクラスのメソッドでRootViewController却下されます。を閉じた後、ナビゲーションスタック内の現在のrootviewcontroller、つまりホームビュー(firstViewController)にポップしました。上記のコードは私の場合は完全に機能します。OnHome:(id)senderMyCurrentVIewControllerModalViewController

于 2012-06-17T12:25:07.470 に答える