关闭模态视图

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

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

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

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

提前致谢!

更新:

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

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

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

再次感谢!

你可以从modalView调用:

[self dismissModalViewControllerAnimated:YES]; 

但是……如果你想拥有一个恒定的编码模式,无论模态视图“返回”某些东西与否,我建议你从父母那里解雇你的观点(那个调用的观点,一个解雇的观点)。 但你可以做到这两点。

这是否回答你的问题 ?

请注意

 [self dismissModalViewControllerAnimated:YES]; 

已从iOS 6开始弃用。 而是使用

 [self dismissViewControllerAnimated:YES completion:nil]; 

您可以使用直接关闭模态视图(即不是从父级)

 [self dismissModalViewControllerAnimated:YES]; 

适用于IOS6及以后使用

[self dismissViewControllerAnimated:YES completion:nil];

Swift版本……

 self.dismissViewControllerAnimated(true, completion:nil) 

如果您不想从self调用它,可以使用委托来调用它。

因此,您将拥有一个方法viewControllerFinished或您的视图控制器将在其委托上调用的内容。

这样,无论什么启动模态视图控制器也将解雇它。 如果您需要从视图控制器获取任何信息,这将非常有用。

您应该使用展开segue,尤其是因为您可以使用它来从显示的视图控制器获取信息。 这显示了如何创建一个: http : //spin.atomicobject.com/2014/10/25/ios-unwind-segues/

Swift 4版本:

self.dismiss(animated: true, completion: nil)