在我的导航堆栈中,我有2个viewcontrollers,它们被推送到导航堆栈。在那我有一个PresentModalViewController作为rootviewcontroller,我推了2个以上的viewcontrollers。所以导航堆栈就像
ViewController
的ViewController
PresentModalViewController as rootviewcontroller
ViewController
的ViewController
从最顶层的viewcontroller,点击按钮,我想移动到最底层的viewcontroller。应该弹出或解除其间的视图控制器。这怎么可能。
我尝试了dismissModalViewControllerAnimated:
和popToRootViewControllerAnimated:
但没有取得任何成功。
答案 0 :(得分:0)
试试这个会起作用
NSArray *vcs = [self.navigationController viewControllers];
[self.navigationController popToViewController:[vcs objectAtIndex:[vcs count]-2] animated:YES];
答案 1 :(得分:0)
您需要popToRootViewControllerAnimated
使用navigationController
的{{1}}。然后你应该使用ModalViewController
。然后你应该做dismissModalViewControllerAnimated
。
答案 2 :(得分: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
在OnHome:(id)sender
课程的MyCurrentVIewController
方法中被驳回。在解除ModalViewController
之后,我弹出到导航堆栈中的当前rootviewcontroller,这是主视图(firstViewController)。上面的代码在我的案例中完美无缺。