我有一个tableview,其中一个单元格应该显示缩略图图像。但是,如果该图像不可用(尚未拍摄),我会 LIKE 为单元格的accessoryView显示相机UIBarButtonItem ...但是当我尝试我惯常的方法时,我会得到'不兼容类型的警告。有没有办法在导航栏之外使用这些项目?
答案 0 :(得分:5)
无法直接使用UIBarButtonItem
作为单元格的accessoryView,因为UIBarButtonItem
不是UIView
。
次优解决方案可能是使用UIToolbar
来保留您的UIBarButtonItem
。然后,您可以将UIToolbar
添加为单元格的accessoryView,但最终会得到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];
答案 1 :(得分:0)
我认为这是不可能的。因为它被称为BarButtonItem,它只能进入一个条形码。旧方法一切正常:截取相机按钮的屏幕截图(只需将其添加到屏幕截图的任何导航栏),从屏幕截图中剪切出来,将常规UIButton添加到您的单元格,并将相机按钮的图像添加为背景图像你的UIButton使用
[button setBackgroundImage:[UIImage imageWithImage:@"camerabutton.png"] forState:UIControlStateNormal];
并按下按钮的截图并将其保存并将其设置为选定状态的图像:
[button setBackgroundImage:[UIImage imageWithImage:@"camerabuttonpressed.png"] forState:UIControlStateHighlitedl];