2017-03-24 41 views
0

我尝试使用2视图控制器在iOS应用中使标签显示"asdf"如何调用Swift中另一个类中的函数?

我尝试运行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上做了一些搜索,然后我来试验继承,它没有显示错误,但函数没有被调用。

我尝试使用继承方法:

在视图控制器(ViewController.swift):
import UIKit 

class ViewController: TestViewController { 

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

错误得到解决,但标签未变更为asdf

如何使我的ViewController.swift能够调用位于另一个控制器TestViewController.swift中的功能testA()

+0

看起来像你是Swift和一般编程的新手。在开始ios开发之前,我建议采用面向对象的教程/类。 –

回答

1

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

+0

虽然这可能有助于OP,它应该是一个评论而不是答案。 –

+0

如果NSNotification解决方案无法保存对ViewA的引用,则可以帮助许多OP。 – muescha

0

公众testA()功能并调用

TestViewController.testA() 
override func viewDidLoad()ViewController 进口TestViewController

在第一。

+0

要调用这样的方法,您需要声明您正在调用类或静态方法的方法。 –

0

您可以创建该类的对象,并且可以调用该函数,如下所示。

let testVC = TestViewController() 

现在使用对象

testVC.testA() 

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

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

在上述情况下,您不必创建对象,因为它是一个类的方法所以这样称呼它下面。

Helper.testFunction() 
相关问题