从另一个视图控制器关闭视图控制器

时间:2012-12-25 13:49:14

标签: objective-c xcode

我对iPhone应用程序开发很陌生 我试图从另一个视图关闭/删除一个视图,但有些视图对我不起作用。

如何从另一个视图控制器关闭/删除视图控制器。

有两种观看AB 视图A正在使用以下代码打开视图B

ViewBScreenController *mViewB = [[ViewBScreenController alloc] initWithNibName:nil bundle:nil];
[self presentModalViewController:mViewB animated:YES];

但有些我无法从视图控制器A关闭视图B 怎么做?

---- ---- UPDATE

正如在答案中所提到的,为什么我需要从视图A关闭视图B,因为我从应用程序层下面获取事件以查看控制器A,并且在某些事件上我想从视图A关闭视图B.

也可以发送一些事件来查看B关闭自己。

感谢。

5 个答案:

答案 0 :(得分:1)

在A

- (void)viewDidLoad
{
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(XXXXX)        name:@"RRRR" object:nil];
}

-(void)XXXXX{

/* any method  you wont */
[self dismissModalViewControllerAnimated:YES];
//////////////////////////

}

在B或C或D等......

-(IBAction)Btn:(id)sender{

[[NSNotificationCenter defaultCenter] postNotificationName:@"RRRR" object:nil];

}

它会做的伎俩

答案 1 :(得分:0)

不推荐使用您正在使用的方法,请改用:

- (void)presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion;  

这样你就可以从A中出示B. 当你想要回到A时,你会做相反的事情:你从B.呈现A. 怎么样?有几种方法,例如观察者通知。

答案 2 :(得分:-1)

尝试阅读有关视图控制器编程指南的这篇精彩文档:http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html#//apple_ref/doc/uid/TP40007457-CH1-SW1

它将回答您的所有问题。

答案 3 :(得分:-1)

您正在寻找dismissViewControllerAnimated:completion:

文档在这里:

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html

通常你应该让视图控制器显示模态视图控制器忽略它,但它也可以解除它自己。该消息将自动转发到呈现它的VC。我会用不太“神奇”的方式做到这一点:

[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];

答案 4 :(得分:-1)

如果用户位于View B,为什么要从View A中解除View B.因为关闭操作的来源无关紧要,为什么不简单地用简单的dismissModalViewController解除View B.关闭视图B的操作只需输入

 - (IBAction)goBack:(id)sender {
    [self dismissModalViewControllerAnimated:YES];

}

因此,使用此代码,您应该能够解决模态视图控制器没有问题。并且它可以从任一视图中解除,但如果存在视图B,则用户无法与按钮交互或在视图A上创建操作。