ios - Swift 中从子级到父级的调用函数

标签 ios swift xlpagertabstrip

我正在使用 xlagertabstrip,并且我有一个父 View Controller ,它有两个 subview (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()
}

但是该代码不起作用。我该如何解决这个问题?

最佳答案

只需将 hideActivityIndi​​cator() 从父级传递给子级,并在必要时调用它即可。因此,每当您创建子 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/

相关文章:

ios - Swift:如何在使用 XLPagerTabStrip 中的 subview Controller 后返回到第一个 View Controller

ios - 如何让 SKLabelNode 在执行操作后运行 waitForDuration SKAction 进行更新?

ios - 如果搜索字符串包含左 "("和右 ")"括号,则 NSPredicate 不起作用

ios - 我想检测实时摄像机中的运动/移动。我该怎么做?

ios - Swift 不会将 Objective-C NSError** 转换为抛出

ios - 如何在显示 View 时屏蔽 ViewController

ios - RestKit + CoreData,理解RKManagedObjectRequestOperation

ios - 获取视频 IOS 6 的所有帧

ios - XLPagerTabStrip 库中单 View Controller 中的多个 ButtonBarView

swift - 将数据从容器 VC 传递到 XLPagerTabStrip 中的子 VC