如何在参数传递中避免错误“无法将'UIButtonType'转换为'UIBarButtonItemStyle'?”

时间:2011-01-08 22:00:19

标签: iphone objective-c cocoa-touch uikit uiviewcontroller

我将zxing(qrcode扫描)整合到我的iPhone项目中。我按照说明使其工作,其中包括将类文件从.m重命名为.mm。

当我这样做时,我的项目无法编译错误:“无法在参数传递中将'UIButtonType'转换为'UIBarButtonItemStyle'”,这在我的类中的以下代码中发生(添加一个按钮以允许用户调用扫描操作)

// Add scan button
UIBarButtonItem *qrScanButton = [[UIBarButtonItem alloc] initWithTitle:@"Scan" 
    style: UIButtonTypeInfoLight 
    target:self action:@selector(qrScanButtonPressed)]; 
    [[self navigationItem] setLeftBarButtonItem: qrScanButton];
    [qrScanButton release];

错误似乎是问题与

有关
  

style:UIButtonTypeInfoLight

如果我注释掉整个块,那么代码编译得很好。当文件类型变为.mm时,它将停止工作。这是一个非常标准的代码块,用于添加备用后退按钮等。

如果有人有任何想法如何解决,我会非常感激。

1 个答案:

答案 0 :(得分:3)

问题是“UIButtonTypeInfoLight”不是有效的UIBarButtonItemStyle。 (在上面链接的底部搜索UIBarButtonItemStyle常量。)

目前有效值(iOS 4.2):

  • UIBarButtonItemStylePlain
  • UIBarButtonItemStyleBordered
  • UIBarButtonItemStyleDone

你传入的是UIButtonTypeInfoLight,它是一个UIButtonType,在UIBarButtonItem的范围内毫无意义。