【问题标题】:Swift make user selection on picker view the title for a buttonSwift 在选择器上进行用户选择查看按钮的标题
【发布时间】:2018-04-21 02:17:58
【问题描述】:

所以,我不确定我是否一直盯着我的代码太久而变得愚蠢,或者这对于我目前的技能来说有点太高级了。我试图在用户使用DPPickerManager 按下按钮时弹出一个pickerview,并且当用户选择一种颜色时,按钮的标题应该更改为用户选择的内容。流向我能够链接按钮和pickerview的方向,但我无法更改按钮标题。这是我的代码:

    @IBAction func colorPicker(_ sender: UIButton) {
    let condition = ["Blue", "Black", "Green", "Orange", "Purple"]
    DPPickerManager.shared.showPicker(title: "Strings Picker", selected: "Value 1", strings: condition) { (value, ind, cancel) in
        if !cancel {
            //sender.titleLabel.text = value![index].text
            print(value as Any)
        }

    }
}

我不断收到此错误:无法将类型 '(Any) -> Int' 的值转换为预期的参数类型 '(UnboundedRange_) -> ()' 我认为这是因为值的索引,但我不确定。有人可以帮我吗?

【问题讨论】:

  • 检查我的答案。

标签: swift xcode swift4 uipickerview xcode9


【解决方案1】:

我已经使用了你的代码,它对我来说运行良好。

@IBAction func btnActionTapped(_ sender: UIButton) {

    let condition = ["Blue", "Black", "Green", "Orange", "Purple"]

    DPPickerManager.shared.showPicker(title: "String Picker", selected: "Value 1", strings: condition) { (value, index, cancel) in
        if !cancel {
            if let value = value {
                sender.setTitle(value, for: .normal)
                print(value)
            }
        }
    }
}

我只是更改了以下代码以获取值而不是可选值。

if let value = value {
    print(value)
}

我在那里获取字符串值并在控制台中正常打印。

【讨论】:

  • 成功了!非常感谢!您能否再解释一下您的答案,这样我以后就不会遇到这个问题了?
  • 是的,第一个值是在 showPicker 方法的完成块中返回字符串。您将通过数组访问,因此不是访问值的方法。另一件事是字符串返回可选值,其平均值可以为零。所以我通过使用 if let value = value 条件来获得价值。这意味着如果 value 为 nil,则 if 块中的代码永远不会执行,否则打印您的值。
  • 是否有可能确保 value 永远不会为零?
  • 是的,目前在您的代码中,数组中的所有值都不为零...
  • 对,我的意思是有办法硬编码吗?就像将来我想做类似的事情,但用户输入的变量可以稍后从选择器视图中选择。
猜你喜欢
  • 2011-01-03
  • 1970-01-01
  • 1970-01-01
  • 2018-06-28
  • 1970-01-01
  • 1970-01-01
  • 2013-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多