Swift Navigation Bar项目没有调用操作

时间:2016-08-20 22:17:11

标签: swift uibutton navigation

我在导航栏上有一个调用动作的项目。它停止了工作。我已将该项目与该操作断开连接并重新附加。仍然没有行动。该操作附加在故事板中。如何调试或解决此问题?

3 个答案:

答案 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