繁体   English   中英

“在调用中缺少参数'style'的参数”创建系统UIBarButtonItem时出错

[英]“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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM