与 IBAction 链接的 UIButton 不能在物理设备上的模拟中工作,也不能在 Xcode 9.2 中的模拟器中工作

Posted

技术标签:

【中文标题】与 IBAction 链接的 UIButton 不能在物理设备上的模拟中工作,也不能在 Xcode 9.2 中的模拟器中工作【英文标题】:UIButton linked with IBAction will not work in simulation on physical device nor simulator in Xcode 9.2 【发布时间】:2018-01-10 02:14:55 【问题描述】:

我使用 Control + Drag 添加了 UIButton,添加了变量和 arc4random 用于随机数字,然后使用前端函数测试我的按钮以确保它有效。但是按钮完全没有响应,我的代码没有错误。

import UIKit

class ViewController: UIViewController 

    var randomDiceIndex1 : Int = 0
    var randomDiceIndex2 : Int = 0

    @IBOutlet weak var diceImageView1: UIImageView!
    @IBOutlet weak var diceImageView2: UIImageView!

    override func viewDidLoad() 
        super.viewDidLoad()

    

    @IBAction func rollButtonPressed(_ sender: UIButton) 

        randomDiceIndex1 = Int(arc4random_uniform(6))
        randomDiceIndex2 = Int(arc4random_uniform(6))

        print(randomDiceIndex1) //This line of code is what I used to test
    

【问题讨论】:

您需要确保storyboard 视图控制器和ViewController 之间的连接,您可以通过在storyboard 上右键单击viewController 来做到这一点。 我检查以确保我有一个连接,我确实做到了。我正在对 Udemy 进行跟进,我重新编写了代码和所有内容,只是为了得到相同的结果。这可能是一个错误吗? 这不太可能是错误,因为这是完全标准的功能,如果出现问题,人们会大声疾呼。您能否分享项目(保管箱等)或提供有关如何设置故事板的更多详细信息。 我今天解决了这个问题。我刚刚删除了按钮和我用它建立的所有连接并添加了一个新按钮。对不起伙计们,新手错误。 【参考方案1】:

以编程方式分配操作。

yrBtnOutlet.addTarget(self, action: #selector(self. rollButtonPressed(_:)), for: .touchUpInside)

希望这会有所帮助。

【讨论】:

虽然您当然可以这样做,但应该没有必要,而且它无助于确定导致原始问题的原因。

以上是关于与 IBAction 链接的 UIButton 不能在物理设备上的模拟中工作,也不能在 Xcode 9.2 中的模拟器中工作的主要内容,如果未能解决你的问题,请参考以下文章

自定义 UIButton - IBAction 不起作用

在 IBAction 中禁用的 UIButton 重新启用自身

UIbutton不改变IBAction内的背景

如何在不重叠的情况下在 UIButton 中实现两个 IBAction?

UIButton 和 IBAction

将 UIButton 的目标设置为 IBAction 不起作用(Objective-C)