【发布时间】:2011-08-20 02:10:50
【问题描述】:
我有一个表格视图,其中一个单元格应该显示缩略图。但是,如果该图像不可用(尚未拍摄),我会 LIKE 让单元格的附件视图显示相机 UIBarButtonItem...但是当我尝试我常用的方法时,我得到'不兼容类型的警告。有没有办法在导航栏之外使用这些项目?
【问题讨论】:
标签: iphone ios uitableview uibarbuttonitem
我有一个表格视图,其中一个单元格应该显示缩略图。但是,如果该图像不可用(尚未拍摄),我会 LIKE 让单元格的附件视图显示相机 UIBarButtonItem...但是当我尝试我常用的方法时,我得到'不兼容类型的警告。有没有办法在导航栏之外使用这些项目?
【问题讨论】:
标签: iphone ios uitableview uibarbuttonitem
不能直接使用UIBarButtonItem作为cell的accessoryView,因为UIBarButtonItem不是UIView。
次优解决方案可能是使用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];
【讨论】:
我认为这是不可能的。由于它被称为 BarButtonItem 它只能进入一个栏。旧方法虽然有效:截取相机按钮的屏幕截图(只需将其添加到屏幕截图的任何导航栏),将其从屏幕截图中剪切,将常规 UIButton 添加到您的单元格并将相机按钮的图像添加为背景图像你的 UIButton 使用
[button setBackgroundImage:[UIImage imageWithImage:@"camerabutton.png"] forState:UIControlStateNormal];
还可以在按下按钮时截取按钮并将其保存并设置为选定状态的图像:
[button setBackgroundImage:[UIImage imageWithImage:@"camerabuttonpressed.png"] forState:UIControlStateHighlitedl];
【讨论】: