如何以编程方式从 Swift 4 中的 UIButton 接收输入?
How to programmatically receive input from UIButton in Swift 4?
我是 Swift
的新手。我设法构建了一个几乎可以运行的应用程序,但我无法正确完成最后的步骤。如果有任何帮助,我将不胜感激!
我写了一段代码,它显示了用户定义的 UILabel
个数。在这些标签中,显示了 [String]
的内容。在标签下,有相同数量的 UITextField
。用户应填写这些文本字段,按下按钮,然后查看他填写的内容是否与标签匹配。
所有标签、文本字段和按钮都是完全以编程方式制作的,因此无需使用故事板。在 viewDidLoad
中有所有代码和这一行:
myButton.addTarget(self, action: #selector(buttonAction), for: .touchUpInside)
在viewDidLoad
下面有一个我在这个论坛上找到的功能,我稍微修改了一下:
@objc func buttonAction(sender: UIButton!) -> [String] {
var a = 0
var userInput: [String] = Array()
while a < 4 {
if let myTextField = self.view.viewWithTag(a) as? UITextField {
let tekstInput = myTextField.text
userInput.insert(tekstInput!, at:a-1)
}
a = a + 1
}
return userInput
}
我的问题:
函数中的while
-循环不应该有4作为最大值,而是一个用户定义的变量。但是如果我尝试更改函数以便它期望该变量作为输入,我会在 myButton.addTarget
行中收到错误消息。
我如何读出 viewdidload 中的 return 以添加代码以将用户输入与原始 [String]
进行比较?
如果你想回答你的问题,你应该考虑用户定义输入的来源。
例如,如果您愿意添加一个额外的 UITextField
来检索您的用户输入,那么您所要做的就是从 buttonAction(sender:)
方法中的该文本字段中提取值,然后在那里使用它。这大致翻译成以下
@objc func buttonAction(_ sender: UIButton) {
var a = 0
var userInput: [String] = Array()
guard let upperLimit = self.userInputTextField.text as? Int else {
return
}
while a < upperLimit {
if let myTextField = self.view.viewWithTag(a) as? UITextField {
let tekstInput = myTextField.text
userInput.insert(tekstInput!, at: a-1)
}
a = a + 1
}
}
请注意,self.userInputTextField
是您应该添加的额外文本字段,以便检索您的用户定义输入。
我是 Swift
的新手。我设法构建了一个几乎可以运行的应用程序,但我无法正确完成最后的步骤。如果有任何帮助,我将不胜感激!
我写了一段代码,它显示了用户定义的 UILabel
个数。在这些标签中,显示了 [String]
的内容。在标签下,有相同数量的 UITextField
。用户应填写这些文本字段,按下按钮,然后查看他填写的内容是否与标签匹配。
所有标签、文本字段和按钮都是完全以编程方式制作的,因此无需使用故事板。在 viewDidLoad
中有所有代码和这一行:
myButton.addTarget(self, action: #selector(buttonAction), for: .touchUpInside)
在viewDidLoad
下面有一个我在这个论坛上找到的功能,我稍微修改了一下:
@objc func buttonAction(sender: UIButton!) -> [String] {
var a = 0
var userInput: [String] = Array()
while a < 4 {
if let myTextField = self.view.viewWithTag(a) as? UITextField {
let tekstInput = myTextField.text
userInput.insert(tekstInput!, at:a-1)
}
a = a + 1
}
return userInput
}
我的问题:
函数中的while
-循环不应该有4作为最大值,而是一个用户定义的变量。但是如果我尝试更改函数以便它期望该变量作为输入,我会在 myButton.addTarget
行中收到错误消息。
我如何读出 viewdidload 中的 return 以添加代码以将用户输入与原始 [String]
进行比较?
如果你想回答你的问题,你应该考虑用户定义输入的来源。
例如,如果您愿意添加一个额外的 UITextField
来检索您的用户输入,那么您所要做的就是从 buttonAction(sender:)
方法中的该文本字段中提取值,然后在那里使用它。这大致翻译成以下
@objc func buttonAction(_ sender: UIButton) {
var a = 0
var userInput: [String] = Array()
guard let upperLimit = self.userInputTextField.text as? Int else {
return
}
while a < upperLimit {
if let myTextField = self.view.viewWithTag(a) as? UITextField {
let tekstInput = myTextField.text
userInput.insert(tekstInput!, at: a-1)
}
a = a + 1
}
}
请注意,self.userInputTextField
是您应该添加的额外文本字段,以便检索您的用户定义输入。