0

在我的导航堆栈中,我有 2 个视图控制器,它们被推送到导航堆栈。除此之外,我有一个 PresentModalViewController 作为 rootviewcontroller,我在它上面再推了 2 个 viewcontroller。所以导航堆栈会像

视图控制器

视图控制器

PresentModalViewController 作为 rootviewcontroller

视图控制器

视图控制器

从最顶部的视图控制器,单击按钮,我想移动到最底部的视图控制器。应该弹出或关闭其间的视图控制器。这怎么可能。我已经尝试过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被解除。关闭后,我弹出到导航堆栈中的当前根视图控制器,即主视图(firstViewController)。上面的代码在我的情况下完美运行。OnHome:(id)senderMyCurrentVIewControllerModalViewController

于 2012-06-17T12:25:07.470 回答