2016-07-29 36 views
0

如何使用函數更新label.text? 這是我的代碼:如何使用函數更新文本標籤?

func test() -> String!{ 
    return "2" 
} 

let label: UILabel = { 
    let label = UILabel() 
    label.text = "\(test)" 
    label.translatesAutoresizingMaskIntoConstraints = false 
    return label 
}() 

但是,當我吃午飯的應用程序,屏幕上顯示我 this

+1

嘗試改變「\(測試) 「to」\(test())「 – Woodgun11

+1

試試這個 label.text = test() –

+0

它給了我:在類型'MyClass'上使用實例成員'test' –

回答

0

,因爲你需要訪問self不能調用初始化實例方法的另一個屬性直到課程完全初始化之後纔可用。

您可以通過使您的label a lazy var避免這種情況,直到第一次訪問它纔會被初始化。然後,你可以調用self.test()來訪問你的函數:

lazy var label: UILabel = { 
    let label = UILabel() 
    label.text = self.test() 
    label.translatesAutoresizingMaskIntoConstraints = false 
    return label 
}() 

或者,你可以做teststatic功能,然後用MyClass.test()稱之爲:

static func test() -> String { 
    return "2" 
} 

let label: UILabel = { 
    let label = UILabel() 
    label.text = MyClass.test() 
    label.translatesAutoresizingMaskIntoConstraints = false 
    return label 
}()