标准按钮的IBAction不起作用

时间:2016-11-04 09:17:26

标签: objective-c swift xcode uibutton ibaction

这是基本的,应该开箱即用,所以我没有任何线索,为什么它没有。我试图删除IBAction的链接并重新重写 - 日志没有显示它被点击。奇怪的。

enter image description here

这是代码:

@IBAction func onManClicked(sender: AnyObject) {
    NSLog("onManClicked")
    person.gender = 1
    genderUpdate()

}

NSLog部分从未触发过。 因此,ViewController中的四个按钮都没有响应。 问题出在哪里?

这是我添加整个视图的方式 - 我认为这是问题所在。

    let vc = PersonalDialog(nibName :"PersonalDialog", bundle: nil, section: section, position: position, person: Person())
    vc.view.frame = UIScreen.mainScreen().bounds
    parentVC.view.addSubview(vc.view)

我是iOS开发的新手,我不知道热门做得对 - 我现在明白我添加了一个子视图但没有为它添加控制器。可能。但是,它确实调用了viewDidAppear方法

2 个答案:

答案 0 :(得分:1)

您是否尝试过检查按钮交互是否已启用及其父视图? 它是否被某些对象或其他视图重叠?

我之前经历过这个,我刚检查了所有这些,它解决了这个问题。

答案 1 :(得分:0)

你说:

  

我尝试删除IBAction的链接并重新重写

所以...尝试在Interface Builder中删除连接,然后重新连接(你可能已经完成了)

另一件要注意的事情。

如果我在Swift 3中创建一个这样的方法:

    @IBAction func buttonClicked(sender: AnyObject) {
        print("hello")
    }

然后尝试连接到那个,然后连接看起来像这个

enter image description here

注意"与发件人"部分,我没有添加,但它是新的Swift 3参数命名的一部分。

为避免这种情况,我必须将我的方法重命名为:

@IBAction func buttonClicked(_ sender: AnyObject) {
    print("hello")
}

(在发件人之前注意_

如果我重新连接:

enter image description here

事情看起来像预期的那样。也许这也是你咬过的东西?接口构建器正在查找名为@IBAction的{​​{1}},并且您定义了名为onManClickedWithSender的{​​{1}}。

希望这会对你有所帮助。