[英]“Missing argument for parameter 'style' in call” error in creating system UIBarButtonItem
我不明白为什么编译器要求在这个系统风格的UIBarButtonItem初始化程序中使用style参数的参数 - 它首先没有该参数。 救命? 这是Swift的错误吗?
class ExpensesViewController: UIViewController {
lazy var newExpenseBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Add, target: self, action: Selector("newExpenseBarButtonItemTapped:"))
func newExpenseBarButtonItemTapped() {
}
}
这将删除编译器错误消息:
class ExpensesViewController: UIViewController {
lazy var newExpenseBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.UIBarButtonSystemItemAdd.value,
target:self, action:Selector("newExpenseBarButtonItemTapped:"))
func newExpenseBarButtonItemTapped() {
}
}
.Add
不是有效值
无需为操作添加Selector动词。
class ExpensesViewController: UIViewController {
lazy var newExpenseBarButtonItem = UIBarButtonItem( barButtonSystemItem: UIBarButtonSystemItem.Add,
target:self,
action:"newExpenseBarButtonItemTapped")
func newExpenseBarButtonItemTapped()
{
}
}
如果在类范围中使用self
,则会得到许多奇怪的编译器消息。 看起来swift编译器尚未成熟。 以下代码在Xcode Version 6.1.1(6A2008a)上可以正常使用。
class Foo {
var playButton:UIBarButtonItem? = nil
func initButtons(){
self.playButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Play, target: self, action: Selector("doPlay:"))
}
}
我能够通过使按钮成为一个隐式解包的可选项来解决这个问题,然后再将其初始化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.