我在导航栏上有一个调用动作的项目。它停止了工作。我已将该项目与该操作断开连接并重新附加。仍然没有行动。该操作附加在故事板中。如何调试或解决此问题?
答案 0 :(得分:5)
尝试这样的事情
如果您有参数
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "ButtonName", style: .done, target: self, action: #selector(YourViewController.yourAction(_:)))
}
没有参数
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "ButtonName", style: .done, target: self, action: #selector(YourViewController.yourAction))
}
答案 1 :(得分:1)
如果您使用拖放功能来创建IBAction方法,请确保它为按钮而不是“条形按钮项”创建了方法。
最简单的检查方法是在故事板中打开“文档大纲”视图。
答案 2 :(得分:0)
问题的关键在于 target 参数。
如果您未设置 target:self ,则您没有机会知道从您的班级调用的方法是否有效。您想要触发的选择器方法的行为会很奇怪,有时会起作用,有时却不会。
您必须将 self 属性设置为 target 参数。不是无。
代码中的用法示例:
// trigger func, used from #selector
@objc func selectorMethod() { /*...*/ }
// create the button you wanna set
let rightButton = UIBarButtonItem(title: "ButtonTitle", style: .plain, target: self, action: #selector(selectorMethod))
// set the button item to the right bar
navigationItem.rightBarButtonItem = rightButton