我正在使用 xlpagertabstrip,并且我有一个父 View Controller ,它有两个 child (child1,child2)。
在我的父 View Controller 中,我显示了一个 UIActivityViewIndicator,但我想知道如何在我的 child1 中隐藏该指示器。
这是我的代码:
父 View Controller :
override func viewDidLoad() {
showActivityIndicator()
super.viewDidLoad()
}
func showActivityIndicator() {
//code related to titleview
navigationItem.titleView = titleView
}
func hideActivityIndicator() {
navigationItem.titleView = nil
}
Child1ViewController:
override func viewDidLoad() {
super.viewDidLoad()
call_api()
}
func call_api(){
//code related to api
//if api is ok, I call hideActivityIndicator()
let pctrl = ParentViewController()
pctrl.hideActivityIndicator()
}
但该代码不起作用。我该如何解决?
Best Answer-推荐答案 strong>
只需将 hideActivityIndicator() 从父级传递给子级,并在必要时调用它。因此,每当您创建子 Controller 时,请执行以下操作:
// Parent Controller
childVC.someMethodFromParent = hideActivityIndicator
在您的 ChildController 中执行以下操作:
// Child Controller
internal var someProperty: (() -> Void)!
override func viewDidLoad() {
super.viewDidLoad()
call_api()
}
func call_api(){
//code related to api
//if api is ok, I call hideActivityIndicator()
someMethodFromParent()
}
这应该可以工作
关于ios - 在 Swift 中从子级调用函数到父级,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/52611694/
|