我正在编写一个待办事项列表类型的应用程序,以便快速学习 iOS 开发。我在右侧的导航栏上有一个设置按钮,每当有人单击表格 View 顶部的按钮时,他们就可以将新项目添加到他们的列表中。这会导致“取消”按钮出现在栏的左侧,而“添加”按钮出现在右侧。然而,当这个人完成后,这些按钮就会消失,所以我以编程方式重新创建了设置按钮,并调用了一个应该调用 segue 的函数。
self.navigationItem.rightBarButtonItem = UIBarButtonItem(image: UIImage(named: "modify"), style: UIBarButtonItemStyle.Plain, target: nil, action: Selector("showSettings:"))
这是在导航栏上创建按钮的代码(它确实已创建)
func showSettings(sender: AnyObject?) {
print("segueShouldBeDone!")
performSegueWithIdentifier("showSettings", sender: sender)
}
这是应该调用 segue 的函数(我添加了打印以查看它是否至少被调用,但事实并非如此)。
我在我的代码的另一个地方遇到过同样的问题,但我已经放弃修复它,因为它对我来说并不那么重要。但现在它干扰了应用程序的工作方式,所以我想知道如何修复它。
任何帮助都会很棒。
最佳答案
您的 showSettings:
选择器未被调用,因为您为栏按钮项目的目标指定了 nil
而不是 self
。将行更改为:
self.navigationItem.rightBarButtonItem = UIBarButtonItem(image: UIImage(named: "modify"), style: UIBarButtonItemStyle.Plain, target: self, action: Selector("showSettings:"))
这假设 showSettings:
方法在包含这行代码的同一个类中。
阅读此初始化程序的文档,特别是有关 target
参数的信息。
关于ios - 选择器不适用于我的 swift UIBarButtonItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32801849/