UIBarButton 动作不起作用
UIBarButton action not working
我在使简单的工具栏操作起作用时遇到问题 - 我以前见过这个问题,但答案似乎不起作用。到目前为止我所做的就是创建一个新的测试项目(使用 Xcode 7.3)并修改 ViewController
class 如下:
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.
}
}
代码编译 w/o 错误,垃圾桶图标显示在屏幕底部(在 iPad 上测试),但是当我触摸该图标时,操作从未执行。
我看到一些(旧的)答案似乎表明您需要使用带有 UIBarButtonItem
的自定义视图 (UIButton
),但这似乎有点疯狂,因为a UIBarButtonItem
是为工具栏创建一个项目。我在这里错过了什么?
这里的问题不在于您的 barButton,它是由于限制。
将宽度限制添加到您的工具栏:
NSLayoutConstraint.activateConstraints([
tb.bottomAnchor.constraintEqualToAnchor(self.view.bottomAnchor),
tb.centerXAnchor.constraintEqualToAnchor(self.view.centerXAnchor),
tb.widthAnchor.constraintEqualToConstant(self.view.bounds.width)
])
在 clearAction 方法中删除 sender:AnyObject 然后尝试
因为您在选择器方法
中使用空参数方法
func clearAction () {
print("clear")
}
我在使简单的工具栏操作起作用时遇到问题 - 我以前见过这个问题,但答案似乎不起作用。到目前为止我所做的就是创建一个新的测试项目(使用 Xcode 7.3)并修改 ViewController
class 如下:
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.
}
}
代码编译 w/o 错误,垃圾桶图标显示在屏幕底部(在 iPad 上测试),但是当我触摸该图标时,操作从未执行。
我看到一些(旧的)答案似乎表明您需要使用带有 UIBarButtonItem
的自定义视图 (UIButton
),但这似乎有点疯狂,因为a UIBarButtonItem
是为工具栏创建一个项目。我在这里错过了什么?
这里的问题不在于您的 barButton,它是由于限制。 将宽度限制添加到您的工具栏:
NSLayoutConstraint.activateConstraints([
tb.bottomAnchor.constraintEqualToAnchor(self.view.bottomAnchor),
tb.centerXAnchor.constraintEqualToAnchor(self.view.centerXAnchor),
tb.widthAnchor.constraintEqualToConstant(self.view.bounds.width)
])
在 clearAction 方法中删除 sender:AnyObject 然后尝试 因为您在选择器方法
中使用空参数方法 func clearAction () {
print("clear")
}