Возможно ли иметь UIBarButtonItem в качестве элемента accessoryView ячейки? - PullRequest
2 голосов
/ 20 августа 2011

У меня есть вид таблицы, где в одной из ячеек должна отображаться миниатюра изображения. Однако, если это изображение недоступно (еще не было сделано), я бы НРАВИТСЯ , чтобы аксессуар ячейки отображал камеру UIBarButtonItem ... но когда я пробую свой обычный подход, я получаю "несовместимым" Типы предупреждений. Есть ли способ использовать эти предметы за пределами навигационной панели?

Ответы [ 2 ]

5 голосов
/ 20 августа 2011

Невозможно напрямую использовать UIBarButtonItem в качестве accessoryView ячейки, поскольку UIBarButtonItem не является UIView.

Неоптимальным решением может быть использование UIToolbar для хранения UIBarButtonItem.Затем вы можете добавить UIToolbar в качестве accessoryView ячейки, но в итоге вы получите нежелательный контур UIToolbar.Этот SO ответ объясняет, как сделать прозрачный 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 голосов
/ 20 августа 2011

Я думаю, что это невозможно.Так как он называется BarButtonItem, он может войти только в бар.Хотя старый метод работает: сделайте снимок экрана кнопки камеры (просто добавьте ее на любую панель навигации для снимка экрана), вырежьте его из снимка экрана, добавьте обычную кнопку UIB в вашу ячейку и добавьте изображение кнопки вашей камеры в качестве фонового изображения дляВаш UIButton, используя

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

А также сделайте снимок экрана кнопки при ее нажатии и сохраните ее и установите в качестве изображения для выбранного состояния:

[button setBackgroundImage:[UIImage imageWithImage:@"camerabuttonpressed.png"] forState:UIControlStateHighlitedl];
...