我在ViewController中有多个UItextFields。此外,我还有故事板中的插座功能,以检查文本字段是否为空,仅当文本字段非空时才启用按钮。
对于一些文本字段,我在viewDidLoad之前设置数据,因此用户无需手动输入。即使这些文本字段包含数据,也必须单击一次才能启用该按钮。
var isFirstNameValid = false
@IBAction func validateFirstName(sender: AnyObject) {
guard (!firstNameText.text!.isEmpty) else{
isFirstNameValid = false
return
}
isFirstNameValid = true
enableRegisterButton()
}
func enableRegisterButton()
{
guard (isFirstNameValid) else{
registerButton.enabled = false
return
}
registerButton.enabled = true
}
我希望在文本字段包含用户输入的数据或在viewDidLoad方法之前以编程方式设置时启用该按钮。
答案 0 :(得分:0)
您的代码似乎很好,但我认为您需要尝试替换它:
https.get('https://slack.com/api/oauth.access?client_id='+process.env.CLIENT_ID+'&client_secret='+process.env.CLIENT_SECRET+'&code='+process.env.CODE, (res) => {
res.on('data', (chunk) => {
// THIS CODE IS EXECUTED when HTTPS request from slack has finished
var result = JSON.parse(chunk);
console.log(JSON.stringify(result));
process.env.SLACKTOKEN = result.access_token;
process.env.SLACK_BOT_TOKEN = result.bot.bot_access_token;
console.log(process.env.SLACKTOKEN);
console.log(process.env.SLACK_BOT_TOKEN);
console.log('cb2 : le token est récupéré')
next();
app.get('/',ouvertureWebsocket);
});
});
按强>
@IBAction func validateFirstName(sender: AnyObject) {
guard (!firstNameText.text!.isEmpty) else{
isFirstNameValid = false
return
}
isFirstNameValid = true
enableRegisterButton()
}
或强>
您可以在您的连接检查器中检查@IBAction func validateFirstName(sender: AnyObject) {
isFirstNameValid = !firstNameText.text!.isEmpty
enableRegisterButton()
}
事件并添加方法。
即使它不起作用,您也可以使用Value Changed
方法检查数据值:
viewWillAppear()
答案 1 :(得分:0)
试试这个。但正如你所说“当文本字段有用户输入的数据时”,所以你不能在viewDidLoad之前做到这一点。我认为你应该解释更多。
textField.addTarget(self, action: #selector(YourViewController.textFieldDidChange(_:)), forControlEvents: UIControlEvents.EditingChanged)
和
func textFieldDidChange(textField: UITextField) {
//your code.enable your button here
}
答案 2 :(得分:0)
在viewDidLoad()中验证一次所有文本字段并尝试启用注册按钮。这样,即使所有文本字段都已预先填充,也无需单击任何文本字段,即可启用注册按钮 像这样:
isFirstNameValid = !firstNameText.text!.isEmpty
isLastNameValid = !lastNameText.text!.isEmpty
// rest of the fileds...
enableRegisterButton()
答案 3 :(得分:0)
您的验证码需要在没有用户互动的情况下运行,最佳位置是viewDidLoad
。创建一个检查器函数,它接受UITextField作为其参数并进行实际检查。这样,您可以在viewDidLoad
中以及稍后在IBAction或任何地方验证实际用户输入时调用该检查器功能。
override func viewDidLoad() {
super.viewDidLoad()
// This is where your code to set firstNameText goes
let isFirstNameValid = checker(firstNameText)
myButton.enabled = false
if isFirstNameValid { registerButton.enabled = true }
}
func checker(textField: UITextField) -> Bool {
guard (!textField.text!.isEmpty) else {
return false
}
return true
}
旁注
enableRegisterButton()
功能无关紧要。您已经完成了检查,这就是所谓的函数开始,因此检查enableRegisterButton
中的名字是否有效是多余的。该函数中唯一有用的行是registerButton.enabled = true
,我们可以在不使用该函数的情况下编写。