2016-09-29 1 views
1

Wenn ich zwei benutzerdefinierte UITextField Subklassen, wieändern Typen programmatisch

Class AlphaField: UITextField { 
    self.keyboardType = UIKeyboardType.alphabet 
} 

Class NumberField: UITextField { 
    self.keyboardType = UIKeyboardType.numberPad 
} 

Kann ich dann einen dieser Typen zu einem UITextField zuweisen im viewDidLoad auf eine Erklärung basiert? Zum Beispiel so etwas wie:

@IBOutlet weak var someTextField: UITextField! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    if someBool { 
     someTextField = AlphaField 
    } else { 
     someTextField = NumberField 
    } 
} 

Ich sollte oben nur ein Beispiel hinzufügen. Ich habe einen Grund für die Verwendung von Unterklassen, anstatt nur den UIKeyboardType zu ändern.

+0

Verwenden Sie 'Erweiterung' statt – adnbsr

Antwort

2

Sicher, das wird funktionieren. Natürlich müssen Sie sie richtig initialisiert werden:

if someBool { 
    someTextField = AlphaField(frame: someRect) 
} else { 
    someTextField = NumberField(frame: someRect) 
} 
self.view.addSubview(someTextField) 

Dieses seit someTextField arbeitet ein UITextField ist und auf jede Unterklasse von UITextField zeigen kann.

Bitte beachten Sie, dass es keinen Grund gibt, someTextField eine Steckdose zu machen, da Sie das Textfeld programmatisch erstellen.

+0

Dank @maddy. Das hat Spaß gemacht. – LateNate

Verwandte Themen