【问题标题】:Adding button programmatically swift以编程方式快速添加按钮
【发布时间】:2020-09-23 20:47:01
【问题描述】:

我正在尝试以编程方式添加按钮,我创建了按钮,它显示在应用程序中,但是当我在 #selector 中写入 .addTarget 时出现错误(它构建成功,但操作不起作用)我试图写playAction()playAction(sender:)playAction。它们都不起作用。

playPauseButton.addTarget(self, action: #selector(playAction(sender:)), for: .touchUpInside)

@objc
func playAction(sender: UIButton){
    print("Hello")
}

UPD:我通过创建系统按钮并对其进行了更改来解决。也许我的 Xcode 有错误,因此发生错误。

【问题讨论】:

  • 所以……你看不到你好?
  • 展示如何设置和添加按钮
  • 这个语法很好。鉴于您定义函数的方式,#selector(playAction(sender:)) 语法是正确的。问题出在其他地方(例如,使用断点/日志语句,请确保您甚至点击了此 addTarget 行;使用视图调试器确认该按钮已启用“用户交互”,并且此按钮前面没有任何内容可能正在消耗触摸;等等)。
  • 另外,我可能会建议您退出当前的项目。创建一个MCVE 通过创建一个空白项目并添加基本要素来显示问题。通常在准备 MCVE 时,您通常会自己找出问题的根源。如果没有,您将拥有一个可以上传的最小项目,我们可以查看。
  • 按钮是您的UIView 中唯一的东西吗?是否可能有另一个视图与该视图重叠,或者它的交互被禁用?检查 Debug 视图层次结构以便清楚。

标签: ios swift uibutton addtarget


【解决方案1】:

您的函数需要具有@objc 属性。这允许将其作为选择器进行查找。

@objc
func playAction(sender: UIButton) {
      print("Hello")
}

【讨论】:

  • 嗯,您当时展示的内容并没有错。对不起,我帮不上忙!
【解决方案2】:

改变

playPauseButton.addTarget(self, action: #selector(playAction), for: .touchUpInside)

没关系:

@objc
func playAction(sender: UIButton) {
      print("Hello")
}

为我工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-24
    • 1970-01-01
    • 2012-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多