【问题标题】:How to identify a specific button as a sender如何将特定按钮识别为发件人
【发布时间】:2017-03-22 01:39:01
【问题描述】:

我正在视图控制器之间传递数据,并尝试将特定的 int 从一个视图控制器发送到另一个。

现在,我的代码如下所示:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let werrk = segue.destination as! ViewControllerTwo
    werrk.dataSent = (sender as! UIButton).title(for: .normal)!
    }

它成功地将按钮的标题发送到新的视图控制器。为了还识别特定按钮并发送 int,我想添加一些 if/else 语句,例如...

if sender = button1 {
work.dataSent = 7
}

但是,我找不到正确的命令来实现这一点。 我对所有这些都是新手,任何帮助将不胜感激。非常感谢!

【问题讨论】:

标签: ios swift button sender


【解决方案1】:

尝试在每个按钮上添加一个标签,然后在 if/switch 上使用它来识别

Button1.tag = 1

在你的事件触发器上做类似的事情

if (sender.tag == 1) {
   // do stuffs
}

【讨论】:

  • 我没有想到/不熟悉 .tag 交易。会试试的,谢谢!
  • 我投了赞成票,因为我也这么认为。太糟糕了,OP不理解“=”和“==”之间的区别-并且问题没有被编辑。
  • 谢谢。无论如何,@tfcamp 如果它对您的问题有帮助,您可能希望将答案标记为已接受。
【解决方案2】:

您必须为要在代码中比较的每个按钮添加一个 IBOutlet,然后将插座链接到情节提要中的实际按钮。然后你可以检查发件人是否是那个特定的按钮。

如果这没有意义,请告诉我,我会进一步详细说明。

【讨论】:

  • 谢谢。我确实有(@IBOutlet weak var buttonTwo: UIButton!),它链接到情节提要,但我不知道如何在 if/then 命令中识别按钮的具体语言。
  • 好的,你能提供你必须使用 if/then 命令的整个方法的代码吗?如果senderUIButton 以外的类型,则必须将其转换为UIButton,就像在您的第一段代码中一样-但我认为您知道那部分,因为您提供了代码:) 所以我不是很清楚问题是什么,因为你有所有必要的东西,但我可能会遗漏一些东西......
  • 我所做的一切似乎在逻辑上都是正确的,但我对此并不陌生,只是假设我在指定发件人的方式上犯了一个明显的错误。我收到一个错误:“无法转换 'UIButton!' 类型的值!到预期的参数类型。
  • 我认为问题在于您尝试分配 (=) 与比较 (==)。如果您按如下方式修改代码,它应该可以工作:if (sender as! UIButton) == button1 {
  • 做到了。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-22
  • 2017-02-07
相关资源
最近更新 更多