ios - 如何以编程方式在 Swift 4 中接收来自 UIButton 的输入?

标签 ios swift uibutton uikit programmatically-created

我是 Swift 的新手。我设法构建了一个几乎可以运行的应用程序,但我无法正确完成最后的步骤。如果有任何帮助,我将不胜感激!

我写了一段代码,它显示了用户定义数量的 UILabel。在这些标签中,显示了 [String] 的内容。在标签下,有相同数量的 UITextField。用户应填写这些文本字段,按下按钮,然后查看他填写的内容是否与标签匹配。

所有标签、文本字段和按钮都是完全以编程方式制作的,因此无需使用 Storyboard。在 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 中的返回值以在其中添加代码以将用户输入与原始 [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 是您应该添加的额外文本字段,以便检索您的用户定义的输入。

关于ios - 如何以编程方式在 Swift 4 中接收来自 UIButton 的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52526957/

相关文章:

ios - 当应用程序不在后台时,如何获取 iOS 推送通知的传递状态?

ios - 彼此相切的圆。我如何检测哪个圆被点击了?

ios - 使用 Swift 包管理器添加依赖项

iOS 核心蓝牙 : Possible error codes

ios - 使用swift在选项卡 View 中的导航栏上添加按钮

iOS - UITableViewCell 中 UIButton 的延迟 "Touch Down"事件

ios - 在 numberOfItemsInSection 返回非零项目编号后未调用 UICollectionView cellForItemAtIndexPath

ios - 在用户登录时解析获取 facebook 个人资料图片

swift - UIEdgeInsets 不适用于 TabBar 中的系统图像

ios - 如何在 UITableView Cell 中以编程方式创建 n 个 UIButton?