从 UIView 调用 UIView 控制器



我有一个初始视图控制器,比如 vc1。它有模态按钮,当选择时,会将我带到第二个视图控制器 vc2。在这个视图控制器(vc2)中,我定义了一个视图,比如"视图"。现在,在执行了一些动画之后,我想回到vc1。这可能吗?

我已经能够使用以下方法驳回当前视图:

    [view removeFromSuperview];

但我想回到以前的视图控制器 vc1。根据这篇文章:从UIView获取UIViewController?,我知道我可以得到当前的UIViewController。但是如何返回上一个视图控制器呢?

首先,正如你引用的帖子中所讨论的,我们"不应该需要直接访问视图控制器",我认为这将与 MVC 相反。

而且我不确定您想如何返回 vc1,这是通过按下某个按钮触发的吗?如果要返回,可以在 vc2 而不是视图中执行此操作。你看,在MVC中,视图只显示UI,哪个视图控制器告诉它做并响应用户的操作,然后视图控制器处理所有的逻辑,所以当你想回到vc1时,我认为将控制代码放在vc2中是合适的,只需将一些动作绑定到视图, 就像@selector或块一样,VC2 中的视图可以触发它,然后你就可以了。

我认为你把视图和视图控制器混为一谈了。我认为你根本不需要 vc2。

在 vc1 中试试这个:

  • 按下按钮时,创建新视图(不是视图控制器)
  • 将视图作为子视图添加到 self.view
  • 做动画
  • 从附加到动画的完成块中删除新视图
[self dismissViewControllerAnimated:YES completion:nil];

在动画完成处理程序中编写此内容,或者在通过此代码删除视图后,如您所述,

[view removeFromSuperview];

最新更新