如何在Swift中调用位于另一个类中的函数?

时间:2017-03-24 03:38:56

标签: ios swift inheritance swift3

我尝试在iOS应用中制作Label,使用2个视图控制器在标签中显示"asdf"

我尝试运行testA()功能但显示错误:ViewController.swift:15:9: Use of unresolved identifier 'testA'

我的初始代码:

ViewController.swift
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        testA()
    } 
}
在另一个控制器(TestViewController)中:
import UIKit

class TestViewController: UIViewController {
    @IBOutlet weak var testLabel: UILabel!

    func testA() {
        testLabel.text = "asdf"
    }

}

我的Main.storyboard链接到TestViewController类

我在google上进行了一些搜索,然后我尝试了继承,但没有显示错误,但是没有调用该函数。

我尝试使用继承方法:

在View Controller(ViewController.swift)中:
import UIKit

class ViewController: TestViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        testA()
    }
}

错误已解决,但标签未更改为asdf

如何让ViewController.swift能够调用位于另一个控制器testA()中的函数TestViewController.swift

3 个答案:

答案 0 :(得分:2)

您可以创建该类的对象,您可以按如下方式调用该函数。

let testVC = TestViewController()

现在使用对象

调用该函数
testVC.testA()

或者更好的方法是创建一个class func,如果你想从很多地方调用它并且它独立于对象。

class Helper {
    class func testFunction() {
      // Do something
    }
}

在上面的场景中,您不必创建对象,因为它是一个类方法,所以请在下面调用它。

Helper.testFunction()

答案 1 :(得分:1)

您可以使用NSNotification,或者如果在第一个视图之后加载第二个视图,则可以使用委托。

答案 2 :(得分:0)

公开testA()功能并调用

TestViewController.testA() 
override func viewDidLoad() ViewController中的

首先导入TestViewController。