如何解雇模态视图控制器

时间:2012-07-02 11:58:18

标签: iphone uiviewcontroller

我有一个小问题 我正在拍摄5个ViewCotrollers A,B,C,D,E。 A是RootViewcontroller。 在A a中添加一个按钮并给它一个动作。当我单击按钮时,显示presentModalViewController被调用和B ViewController。它的addsubView流程。所以在所有观点中,同样的过程就是他们的。意味着连锁过程。
但在上一个视图中我想解雇这个presentmodalViewController。我尝试过这种代码。

-(IBAction)Done:(id)sender
{
   [self dismissModalViewControllerAnimated:NO];
}

但它不起作用。给我适当的指导.. 感谢..

3 个答案:

答案 0 :(得分:2)

尝试使用以下通知:

- (void)dismissSelf {
[self dismissModalViewControllerAnimated:YES];  
}


- (void)receiveDismissNotification:(NSNotification *) note{
[self performSelectorOnMainThread:@selector(dismissSelf) withObject:nil waitUntilDone:NO];
}

答案 1 :(得分:1)

在E View的按钮事件中,写下此

-(IBAction)Done:(id)sender
{
    id mainViewController = [self.view.superview.superview nextResponder];
    [mainViewController dismissModalViewControllerAnimated:YES];
}

此代码未经过测试,但尝试使用此代码,希望它有效: - )

答案 2 :(得分:0)

在同一个.xib文件中创建从A到E的所有视图....

然后在.h文件中声明:

UIView *containerView;

和所有从B到E的视图的IBOutlets ..

在.m文件中

在按钮动作中您可以执行此操作...

containerView= [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
[containerView addSubview:BView]; 
[self.view addSubview:containerView];

此代码将在您的rootViewController中添加BView,即A ...

现在,在IBAction的休息视图中,您可以编写此代码进行导航..

[UIView transitionFromView:BviewController toView:CViewController duration:1.0 options:UIViewAnimationOptionTransitionCurlDown completion:nil];

依旧......

返回你的rootViewController,即A

[containerView removeFromSuperview];

在E视图的IBAction中;  或者您也可以使用transitionFromView导航...