如果我没弄错的话,必须从父视图中删除模态视图,而不是从模态视图本身中删除。
在我目前的项目中,我有两个模态视图。在第一个中,我将数据传递给父视图。当数据传递给父视图时,执行解除。
现在,我有另一个模态视图,不会将数据传递给父视图,所以我不知道如何解除除了做一个自我dismissModalView
除此之外,还有其他关于这个主题的良好实践的建议吗?
提前致谢!
更新:
从我得到的答案中,我看到我还没有让自己非常清楚(并不罕见,BTW)。
我知道如何自我解雇modalViewController。那没问题。 我也知道如何使用protocol-delegate方法在传递一些数据时从父视图中解除modalViewController。
我的问题是:当没有数据传递时,如何从父视图中解除modalViewController。
再次感谢!
答案 0 :(得分:13)
您可以从modalView调用:
[self dismissModalViewControllerAnimated:YES];
但是......如果你想拥有一个恒定的编码模式,无论模态视图“返回”某事物是什么,我建议你从父母那里解雇你们的观点(那个调用的观点,一个解散的观点)。但你可以做到这两点。
这会回答你的问题吗?
答案 1 :(得分:8)
请注意
[self dismissModalViewControllerAnimated:YES];
已从iOS 6开始弃用。而是使用
[self dismissViewControllerAnimated:YES completion:nil];
答案 2 :(得分:5)
您可以使用
直接关闭模态视图(即不是来自父级)[self dismissModalViewControllerAnimated:YES];
答案 3 :(得分:4)
对于IOS6及以后使用
[self dismissViewControllerAnimated:YES completion:nil];
答案 4 :(得分:1)
Swift版本......
self.dismissViewControllerAnimated(true, completion:nil)
答案 5 :(得分:0)
如果您不想从self
拨打电话,可以使用代理人来拨打电话。
因此,您将拥有一个方法viewControllerFinished
或您的视图控制器将在其代理上调用的内容。
这样,无论什么启动模态视图控制器也会忽略它。如果您需要从视图控制器获取任何信息,这将非常有用。
答案 6 :(得分:0)
您应该使用展开segue,尤其是因为您可以使用它来从显示的视图控制器获取信息。这显示了如何创建一个:http://spin.atomicobject.com/2014/10/25/ios-unwind-segues/
答案 7 :(得分:0)
Swift 4版本:
self.dismiss(animated: true, completion: nil)