2017-07-23 8 views
1

Ist es möglich, eine Variable in einem Markennamen zu verwenden.Variable in Etikett Name - Swift

Zum Beispiel heißt mein Etikett button1text und ich habe eine Variable var x = 1.

Gibt es eine Möglichkeit, dies zu tun button(x)text?

+0

Sie sollten überprüfen, [Wörterbücher] (https://developer.apple.com/library/content/documentation/Swift/Conceptual /Swift_Programming_Language/CollectionTypes.html). – the4kman

+0

Related: https://stackoverflow.com/questions/27321778/swift-converting-a-string-into-a-variable-name, https://stackoverflow.com/questions/31175358/for-loop-variable-name -use-swift, https://stackoverflow.com/questions/40585591/how-can-i-access-to-variable-name-and-change-string-to-it –

+2

Diese Frage ist eine reine Swift-Frage, dort ist keine Notwendigkeit für Watchkit-Tag. –

Antwort

2

Nein. Sie können keinen Variablennamen im Bezeichner haben.

2

Variablennamen werden zur Kompilierzeit ausgewertet, nein, zur Laufzeit ist dies nicht möglich.

Alternativ ein Array verwenden oder Tags zu den Etiketten zuweisen und das Etikett mit viewWithTag

0

Sie können mit Mirror Reflexion verwenden bekommen. Die Fähigkeiten werden im Kontext Sie sehr begrenzt, aber Sie können wie etwas versuchen:

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet weak var button1: UIButton! 
    @IBOutlet weak var button2: UIButton! 
    @IBOutlet weak var button3: UIButton! 

    @IBAction func didTapGoButton(_ sender: Any) { 
     let mirror = Mirror(reflecting: self) 
     for child in mirror.children { 
      if let v = child.label, v == "button2" { 
       (child.value as! UIButton).titleLabel?.text = "changed" 
      } 
     } 
    } 
}