关闭模态视图
如果我没弄错的话,模态视图必须从父视图中解除,而不是从模态视图本身中解除。
在我目前的项目中,我有两个模态视图。 在第一个中,我将数据传递给父视图。 将数据传递给父视图时,将执行解除。
现在,我有另一个模态视图,不会将数据传递给父视图,所以我不知道如何解除除了做一个自我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)