我对iPhone应用程序开发很陌生 我试图从另一个视图关闭/删除一个视图,但有些视图对我不起作用。
如何从另一个视图控制器关闭/删除视图控制器。
有两种观看A
和B
视图A
正在使用以下代码打开视图B
。
ViewBScreenController *mViewB = [[ViewBScreenController alloc] initWithNibName:nil bundle:nil];
[self presentModalViewController:mViewB animated:YES];
但有些我无法从视图控制器A关闭视图B
怎么做?
---- ---- UPDATE
正如在答案中所提到的,为什么我需要从视图A关闭视图B,因为我从应用程序层下面获取事件以查看控制器A,并且在某些事件上我想从视图A关闭视图B.
也可以发送一些事件来查看B关闭自己。
感谢。
答案 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:
文档在这里:
通常你应该让视图控制器显示模态视图控制器忽略它,但它也可以解除它自己。该消息将自动转发到呈现它的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上创建操作。