在iOS开发中,从子视图控制器(子VC)调用父视图控制器(父VC)的函数可能会遇到一些问题。以下是一些基础概念和相关解决方案:
从子视图控制器调用父视图控制器的函数不起作用,通常有以下几种原因:
以下是一个完整的示例,展示了如何使用委托模式从子VC调用父VC的函数:
// 定义协议
protocol ParentViewControllerDelegate: AnyObject {
func parentViewControllerDidSomething()
}
// 父VC
class ParentViewController: UIViewController, ParentViewControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
let childVC = ChildViewController()
childVC.delegate = self
addChild(childVC)
view.addSubview(childVC.view)
childVC.didMove(toParent: self)
}
func parentViewControllerDidSomething() {
print("Parent VC did something")
}
}
// 子VC
class ChildViewController: UIViewController {
weak var delegate: ParentViewControllerDelegate?
func someFunction() {
delegate?.parentViewControllerDidSomething()
}
}
通过上述方法,可以有效地从子视图控制器调用父视图控制器的函数,并解决常见的相关问题。
领取专属 10元无门槛券
手把手带您无忧上云