2017-03-24 45 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() 
相關問題