如果在上面的文本字段中没有输入任何内容,那么如何使用segue将您发送到下一个视图控制器的按钮无效?
答案 0 :(得分:0)
您可以实施optional func textField(_ textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool
的{{1}}。每次用户在文本字段中输入或删除字符时都会触发它。您可以检查那里的内容,并从那里适当地启用/禁用您的按钮。
答案 1 :(得分:0)
您可以检查TextField的内容:
if myTF.text != "" || myTF.text != nil {
//TextField contains something
//enable button
//segue to next ViewController
} else {
//TextField empty
//disable button
}
如果您将其实施到textFieldDidEndEditing()
,它将在每次用户输入时进行检查。
确保在您的班级中加入UITextFieldDelegate
,例如:
class myClass: UIViewController, UITextFieldDelegate {...}
希望有所帮助:)
答案 2 :(得分:0)
实施UITextFieldDelegate
协议并将VC设置为委托。
然后执行
func textField(_ textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String)
该协议的方法。
您可以使用此方法检测空字符串。您可以选择彻底并处理复制/粘贴,在这种情况下,您需要使用stringByReplacingCharactersInRange
计算替换后的新字符串的值,或者您可以选择不处理复制粘贴,只需检查{{ 1}}。
根据上述内容,您可以相应地设置按钮的range.location > 0
属性。
答案 3 :(得分:0)
将此添加到viewdidload,将textfieldVerb替换为文本框的名称,将nextVerbOutlet替换为按钮的名称(作为插座)
self.textFieldVerb.addTarget(self, action: "textFieldChanged:", forControlEvents: .EditingChanged)
self.textFieldVerb.addTarget(self, action: "textFieldChanged:", forControlEvents: .EditingChanged)
nextVerbOutlet.enabled = false
然后将此替换textfieldVerb添加到文本框的名称,将nextVerbOutlet添加为按钮名称(作为插座)。这不是在viewdidload中,而是在它下面。
func textFieldChanged(sender: UITextField) {
// simple validation
if textFieldVerb.text?.characters.count > 0
&& textFieldVerb.text?.characters.count > 0 {
self.nextVerbOutlet.enabled = true // re-enable your button
}
}