当 UIViewController 重新聚焦时调用啥函数?
Posted
技术标签:
【中文标题】当 UIViewController 重新聚焦时调用啥函数?【英文标题】:What function is called when a UIViewController is back in focus?当 UIViewController 重新聚焦时调用什么函数? 【发布时间】:2018-08-28 13:22:17 【问题描述】:我有一个单视图应用程序,它还显示了我使用另一个视图控制器制作的自定义弹出窗口。弹出视图控制器分配了以下内容:
presentation: Over current context
当它出现时。当我关闭这个弹出视图控制器以显示第一个视图控制器时,我想知道调用了什么函数,以便我可以在该函数中做更多的事情。我已经测试了以下函数,但是当我关闭弹出窗口以显示第一个 viewController 时,它们都没有被调用。
class firstViewController: UIViewController
override func viewWillAppear(_ animated: Bool)
super.viewWillAppear(animated)
print("viewWillAppear PdfViewController...")
override func viewDidLoad()
super.viewDidLoad()
print("viewDidLoad PdfViewController ...")
【问题讨论】:
您应该始终在viewWillAppear
中调用super.viewWillAppear(animated)
。
@RakeshaShastri - 我已经按照你的建议做了,但它并没有被称为 stil ....我已经通过添加更新了问题
@jamesMcKey 在当前上下文中的演示意味着子控制器将显示在父控制器的顶部。父控制器不会消失。这就是为什么不会调用父控制器的 viewWillAppear 和 viewDidAppear 的原因。您可以创建自己的自定义演示样式来获取回调。见这里:***.com/questions/30474034/…
这是您错过的一些提示,可能不会导致您的问题,但非常重要。 @Sh_Khan 给了你正确的答案。查找代表并实施他的答案。
【参考方案1】:
这取决于样式 overCurrentContext
不会调用 viewWillAppear
/viewDidAppear
,例如 fullScreen
会,请在此处查找所有可能的样式
https://developer.apple.com/documentation/uikit/uimodalpresentationstyle
如果所选的不调用该方法,则在您关闭模式时为该方法实现委托
//
protocol DimissManager
func vcDismissed()
class FirstVc:UIViewController,DimissManager
func vcDismissed()
print("Dismissed")
func showSecond()
let sec = storyboard
sec.delegate = self ...... // note this assign may be in prepareForSegue if you use segues
self.present(sec.......
class SecondVc:UIViewController
var delegate:DimissManager?
@IBAction func dismiss(_ sender:UIButton)
delegate?.vcDismissed()
self.dismiss(animated:true,completion:nil)
【讨论】:
你能帮我把它写成代码吗?我用更多信息更新了我的问题。 始终将委托声明为 WEAK,如下所示:“weak var delegate: DismissManager!”以上是关于当 UIViewController 重新聚焦时调用啥函数?的主要内容,如果未能解决你的问题,请参考以下文章
Swift IOS:从通知打开应用程序时调用 UIviewController 的特定功能
每次在反应本机中聚焦页面时调用 componentWillMount
子类化 UIViewController 时调用 viewDidLoad 是啥?
当我的 UIViewController 被弹出时调用的方法?