UIBarButton行动不起作用

时间:2016-05-16 12:35:10

标签: ios swift uibarbuttonitem

我无法使用简单的工具栏操作 - 我之前已经看过这个问题,但答案似乎不起作用。到目前为止,我所做的就是创建一个新的测试项目(使用Xcode 7.3)并修改import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() print("viewDidLoad") let tb = UIToolbar() let actionClear = #selector(ViewController.clearAction(_:)) let clearButton = UIBarButtonItem(barButtonSystemItem: .Trash, target: self, action: actionClear) tb.items = [clearButton] self.view.addSubview(tb) tb.translatesAutoresizingMaskIntoConstraints = false NSLayoutConstraint.activateConstraints([ tb.bottomAnchor.constraintEqualToAnchor(self.view.bottomAnchor), tb.centerXAnchor.constraintEqualToAnchor(self.view.centerXAnchor) ]) } func clearAction (sender: AnyObject) { print("clear") } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } 类,如下所示:

UIButton

代码编译没有错误,垃圾桶图标显示在屏幕底部(在iPad上测试),但是当我触摸图标时,操作永远不会被执行。

我看到一些(旧)答案似乎表明您需要使用UIBarButtonItem的自定义视图(UIBarButtonItem),但这似乎有点疯狂,因为{的目的{1}}是为工具栏创建项目。我在这里缺少什么?

2 个答案:

答案 0 :(得分:0)

这里的问题不在于你的barButton是由于约束。 将宽度约束添加到工具栏:

NSLayoutConstraint.activateConstraints([
                tb.bottomAnchor.constraintEqualToAnchor(self.view.bottomAnchor),
                tb.centerXAnchor.constraintEqualToAnchor(self.view.centerXAnchor),
                tb.widthAnchor.constraintEqualToConstant(self.view.bounds.width)
                ])

答案 1 :(得分:-1)

删除发件人:clearAction方法中的AnyObject然后尝试 因为你在选择器方法中使用空参数方法

 func clearAction () {
        print("clear")
    }