4

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

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

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

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

提前致谢!

更新:

从我得到的答案中,我发现我并没有把自己说得很清楚(这并不罕见,顺便说一句)。

我知道如何自我关闭 modalViewController。那没问题。我也知道如何使用协议委托方法在传递一些数据时从父视图中关闭 modalViewController。

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

再次感谢!

4

8 回答 8

13

您可以从 modalView 调用:

[self dismissModalViewControllerAnimated:YES];

但是......如果你想要一个恒定的编码模式,无论模态视图“返回”什么,我建议你从父级(调用的那个,那个关闭的那个)中消除你的视图。但是你可以两者都做。

这是否回答你的问题 ?

于 2011-11-10T20:55:42.950 回答
8

请注意

[self dismissModalViewControllerAnimated:YES];

从 iOS 6 起已被弃用。而是使用

[self dismissViewControllerAnimated:YES completion:nil];
于 2014-02-06T14:10:59.493 回答
5

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

[self dismissModalViewControllerAnimated:YES];
于 2011-11-10T20:01:01.753 回答
4

IOS6及以后使用

[自我dismissViewControllerAnimated:是完成:无];

于 2013-01-23T00:21:01.950 回答
2

Swift 4 及更新版本:

self.dismiss(animated: true, completion: nil)
于 2018-04-03T13:07:58.180 回答
0

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

因此,您将拥有一个方法viewControllerFinished或视图控制器将调用它的委托的东西。

这样,无论启动模态视图控制器,它也会关闭。如果您需要从视图控制器获取任何信息,这将很有帮助。

于 2011-11-10T20:55:11.327 回答
0

迅捷版...

self.dismissViewControllerAnimated(true, completion:nil)
于 2015-04-02T22:34:26.170 回答
0

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

于 2015-04-03T00:26:16.767 回答