当UIViewController返回顶部时,iOS中是否有委托函数可得到通知?

时间:2019-04-18 18:52:09

标签: ios swift delegates modalviewcontroller

我是Swift / iOS新手,但这似乎很简单。我有一个UIViewController,执行某些操作后,我将实例化另一个模式UIViewController,在某些时候我将其关闭。我只需要发起VC即可在发生这种情况时得到通知。意识到可以使用导航控件来处理此问题,我正在寻找一种模态化的方法,即

我想将模式vc推到层次结构上:

let vc = storyboard.instantiateViewController(withIdentifier: "DetailView")
self.present(vc, animated: true, completion: nil)

当我在模态vc中执行此操作时:

dismiss(animated: true, completion: nil)

我只希望通知位于后台的原始vc重新回到焦点(或顶部)并能够执行代码。

我想念什么?

1 个答案:

答案 0 :(得分:0)

所以我最终实现了一个紧凑的解决方案-有些人会说没有协议就不是OOP,我同意-但在此应用程序的范围内,它解决了一个简单的present / dismiss结构的问题。

在演示的vc中,我添加了此代码。

let vc = storyboard.instantiateViewController(withIdentifier: "DetailView") as! DetailViewController
vc.masterVC = self
self.present(vc, animated: true, completion: nil)

已声明的masterVC中声明的函数,当模式退出时即被调用:

func calledWhenModalDismisses() {
   // Do This
}

在弹出的模态DetailView中,我只是创建一个指向主对象的成员:

var masterVC: MasterViewController?

然后在我的详细解雇功能中,我可以调用在MasterVC中创建的功能。

masterVC?.calledWhenModalDismisses()
dismiss(animated: true, completion: nil)

同样,这不是一个真正的OOP解决方案(没有协议),但是我敢肯定,当正在显示的vc需要被警告时,当需要提醒正在呈现的vc时,这将帮助一个具有简单紧凑解决方案的人解决一个简单的主/细节问题解雇。当vc成为“焦点”时,Apple实际上应该具有一个委托函数来处理此问题,但事实并非如此。