以编程方式实例化UIBarButtonItem会抛出缺少的参数异常

时间:2015-01-15 16:35:54

标签: ios xcode swift compiler-errors

我试图在Swift中做一些非常简单的事 - 实例化一个UIBarButtonItem:

let btnImg = UIImage(named: "imgName")
let btn = UIBarButtonItem(image: btnImg, style: .Plain, target: self, action: doSomthing)

此代码导致构建失败:

Missing argument for parameter 'landcapeImagePhone' in call

根据the docs,这两个功能都可用:

initWithImage:样式:目标:动作:

init(image image: UIImage?,
    style style: UIBarButtonItemStyle,
    target target: AnyObject?,
    action action: Selector)

initWithImage:landscapeImagePhone:样式:目标:动作:

init(image image: UIImage?,
    landscapeImagePhone landscapeImagePhone: UIImage?,
    style style: UIBarButtonItemStyle,
    target target: AnyObject?,
    action action: Selector)

如果我实现第二个init,我会收到以下错误:

Extra argument 'landscapeImagePhone' in call

有谁知道我可以实现我想要实现的目标的方式?这是Swift / Xcode中的错误吗?我正在运行Xcode 6.1.1。

我做了一个干净的(Cmd + SHIFT + K)和一个构建文件夹干净(Cmd + alt + SHIFT + K)。

1 个答案:

答案 0 :(得分:3)

如果doSomthing是没有参数的函数,则实例化UIBarButtonItem的正确方法应该是:

   let btn = UIBarButtonItem(image: btnImg, style: .Plain, target: self, action: "doSomthing")

查看此帖子,了解有关swift中Selectors的信息: @selector() in Swift?