2016-07-29 4 views
0

Wie kann ich label.text mit einer Funktion aktualisieren? Dies ist mein Code:Wie kann ich Textbeschriftungen mit einer Funktion aktualisieren?

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

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

Aber wenn ich die App Mittagessen, der Bildschirm zeigt mir this

+1

Versuchen Sie, „\ (Test) "to" \ (test()) " – Woodgun11

+1

versuchen Sie dies label.text = test() –

+0

Es gibt mir: Verwendung der Instanz Mitglied 'Test' auf den Typ 'MyClass' –

Antwort

0

Sie können eine Instanz-Methode in dem Initialisierer für eine andere Eigenschaft nicht nennen, weil Sie self zugreifen müssen und das ist nicht verfügbar, bis die Klasse vollständig initialisiert wurde.

Sie können dies umgehen, indem Sie Ihre label eine lazy var machen, die erst beim ersten Zugriff initialisiert wird. Dann können Sie self.test() rufen Sie Ihre Funktion zuzugreifen:

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

Alternativ Sie test in eine static Funktion machen könnte und dann rufen sie mit MyClass.test():

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

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