关闭模态视图

时间:2011-11-10 19:53:12

标签: iphone ios dismiss modal-view

如果我没弄错的话,必须从父视图中删除模态视图,而不是从模态视图本身中删除。

在我目前的项目中,我有两个模态视图。在第一个中,我将数据传递给父视图。当数据传递给父视图时,执行解除。​​

现在,我有另一个模态视图,不会将数据传递给父视图,所以我不知道如何解除除了做一个自我dismissModalView

除此之外,还有其他关于这个主题的良好实践的建议吗?

提前致谢!

更新:

从我得到的答案中,我看到我还没有让自己非常清楚(并不罕见,BTW)。

我知道如何自我解雇modalViewController。那没问题。 我也知道如何使用protocol-delegate方法在传递一些数据时从父视图中解除modalViewController。

我的问题是:当没有数据传递时,如何从父视图中解除modalViewController。

再次感谢!

8 个答案:

答案 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)