2014-08-29 53 views
5

我不明白为什么编译器要求在这个系统样式的UIBarButtonItem初始化程序中的style参数的参数 - 它没有参数在第一位。帮帮我?这是Swift的错误吗?“调用参数'风格'的参数缺失创建系统中的错误UIBarButtonItem

class ExpensesViewController: UIViewController { 

    lazy var newExpenseBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Add, target: self, action: Selector("newExpenseBarButtonItemTapped:")) 

    func newExpenseBarButtonItemTapped() { 

    } 

} 
+0

你有没有得到一个有效的答案呢? – 2014-09-25 13:50:19

+0

@AaronBratcher是的,见下文。 – 2014-09-25 14:03:24

回答

3

这将删除编译器错误消息:

class ExpensesViewController: UIViewController { 

    lazy var newExpenseBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.UIBarButtonSystemItemAdd.value, 
       target:self, action:Selector("newExpenseBarButtonItemTapped:")) 

    func newExpenseBarButtonItemTapped() { 

    } 

} 

.Add不是一个有效的值

+0

你在'UIBarButtonSystemItem.UIBarButtonSystemItemAdd'后添加了什么'.value'?似乎无法得到错误消失对我来说:( – 2014-09-25 18:25:23

+2

上述答案完全失败与Xcode 6.1b2 – 2014-09-25 18:37:07

+0

对我来说也失败了,当我尝试基于设置标题的初始化器,它给了我一个错误,我缺少景观图像参数,似乎完全混淆了。 – 2014-11-03 15:37:21

3

无需添加选择动词的动作。

class ExpensesViewController: UIViewController { 

lazy var newExpenseBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Add, 
                 target:self, 
                 action:"newExpenseBarButtonItemTapped") 


func newExpenseBarButtonItemTapped() 
{ 

} 

} 
-1

我可以通过使按钮隐式解开可选,然后初始化它来解决这个问题。

+0

请显示一些代码。 – Makyen 2014-12-23 01:05:28

2

如果在类范围中使用self,则会收到许多奇怪的编译器消息。它看起来像swift编译器还不成熟。以下代码在Xcode版本6.1.1(6A2008a)上正常工作。

class Foo { 
    var playButton:UIBarButtonItem? = nil 

    func initButtons(){ 
     self.playButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Play, target: self, action: Selector("doPlay:")) 
    } 
}