2011-08-20 46 views
2

我有一个tableview,其中一个单元格应该显示缩略图图像。但是,如果该图像不可用(尚未拍摄),我想LIKE为单元的accessoryView显示相机UIBarButtonItem ...但是当我尝试我平常的方法时,我得到'不兼容类型'的警告。有什么方法可以在导航栏外使用这些项目吗?是否有可能有一个UIBarButtonItem作为单元accessoryView?

回答

5

由于UIBarButtonItem不是UIView,因此不可能直接使用UIBarButtonItem作为单元的附件视图。

次优解决方案可能是使用UIToolbar来保存您的UIBarButtonItem。然后,您可以将UIToolbar添加为单元的附件视图,但最终会出现UIToolbar的不需要的轮廓。这SO answer解释如何使透明UIToolbar子类。这样,你就不会看到工具栏的背景,但你也将失去UIBarButtonItem的轮廓 - 它只会显示白色的相机图标:

UIToolbar *toolbar = [[TransparentToolbar alloc] init]; 
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:@selector(someAction)]; 
toolbar.frame = CGRectMake(0, 0, 40, 30); 
[toolbar setItems:[NSArray arrayWithObject:item] animated:NO]; 
cell.accessoryView = toolbar; 
[item release]; 
[toolbar release]; 
+0

感谢:使用

[button setBackgroundImage:[UIImage imageWithImage:@"camerabutton.png"] forState:UIControlStateNormal]; 

,并采取按钮的截图其按下时,保存它,并把它设置为图像的选中状态您的UIButton。我遗漏了透明度,结果是一个不错的按钮。 –

0

我认为这是不可能的。因为它被称为BarButtonItem它只能进入一个栏。老办法allthough工程:拍摄相机按钮的屏幕截图(只需将其添加到任何导航栏的截图),截图从屏幕截图,添加一个普通的UIButton到您的单元格,并添加相机的图像按钮作为backgroundimage

[button setBackgroundImage:[UIImage imageWithImage:@"camerabuttonpressed.png"] forState:UIControlStateHighlitedl]; 
相关问题