gpt4 book ai didi

ios - 从子 UIViewController 调用父 UIViewController 方法

转载 作者:IT王子 更新时间:2023-10-29 05:47:06 26 4
gpt4 key购买 nike

我有一个父 UIViewController,它打开一个子 UIViewController:

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("myChildView") as! UIViewController
self.presentViewController(vc, animated: true, completion: nil)

我在 ChildView 中按下一个按钮,它应该关闭 ChildView 并在父 View 中调用一个方法:

self.dismissViewControllerAnimated(true, completion: nil)
CALL PARENTS METHOD ??????

怎么做?我找到了一个很好的答案(Link to good answer),但我不确定这是否是 UIViewControllers 的最佳实践。有人可以帮忙吗?

最佳答案

实现此目的的一种简单方法是使用 NSNotificationCenter

在您的 ParentViewController 中,将其添加到 viewDidLoad 方法中:

override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: Selector(("refresh:")), name:NSNotification.Name(rawValue: "refresh"), object: nil)
}

之后在 ParentViewController 中添加此函数,当您关闭 ChildViewController 时将调用该函数:

func refreshList(notification: NSNotification){

print("parent method is called")
}

并在您的 ChildViewController 中添加此代码以关闭您的 subview :

 @IBAction func btnPressed(sender: AnyObject) {

NotificationCenter.default.post(name: NSNotification.Name(rawValue: "refresh"), object: nil)
self.dismiss(animated: true, completion: nil)
}

现在,当您关闭 subview 时,refreshList 方法将被调用。

关于ios - 从子 UIViewController 调用父 UIViewController 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30274017/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com