2016-11-04 110 views
0

这是基本的,应该开箱即用,所以我没有任何线索为什么不这样做。我试图删除链接到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方法

回答

1

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

我以前经历过这个,我只是检查了所有这一切,它有点解决了这个问题。

0

你说:

我试图删除链接到IBAction为,并再次改写它

所以,尽量删除在Interface Builder的连接,然后重新连接(你可能已经做到这一点)

另一件需要注意的事情。

如果我在斯威夫特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,称为onManClickedWithSender,并且您定义@IBAction,称为onManClicked

希望这可以帮助你。

+0

是的,我也删除了IB的参考。你可以看看图片,它调用onManClicked方法,就像在代码中一样,它也是在ManClicked方法上。没有任何4个按钮点击的作品。我编辑了我的帖子以显示如何添加此视图。可能是这个问题?我是iOS和swift的新手。 – user2976267

+0

你可以尝试将它重命名为'onManClicked(_ sender:AnyObject)'(注意_) – pbodsk

+0

是的,它会在参数中显示一个警告“Extraneous'_':'sender'没有关键字参数名称。我编辑后的结束 - 可能是问题在那里? – user2976267