是否可以将UIBarButtonItem作为单元accessoryView?

时间:2011-08-20 02:10:51

标签: iphone ios uitableview uibarbuttonitem

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

2 个答案:

答案 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];