2016-09-29 47 views
1

?例如类似:变化类型的编程

@IBOutlet weak var someTextField: UITextField! 

override func viewDidLoad() { 
    super.viewDidLoad() 

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

我应该在上面添加仅仅是一个例子。我有一个使用子类的理由,而不是仅仅改变UIKeyboardType。

+0

使用'extension'代替 – adnbsr

回答

2

当然,这将工作。当然,你需要正确初始化它们:

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

这工作,因为someTextFieldUITextField并且可以指向的UITextField任何子类。

请注意,由于您以编程方式创建的文本字段,没有理由让someTextField的出口。

+0

感谢@maddy。这很有用。 – LateNate