Использовать BarButtonItem как leftCallOutAccessoryView для MKPinAnnotationView?

Название в значительной степени объяснило это. Является ли это возможным? Я попытался назначить его следующим образом:

UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(saveAnnotation:)];
pinView.leftCalloutAccessoryView = leftButton;

Я также пробовал использовать его как UIButton и как UIView. Основная причина, по которой я хочу этого, заключается в том, что я хочу, чтобы эта маленькая кнопка сохранения уже была интегрирована в UIBarButtonSystemItemSave. Как я могу этого добиться?


person Martol1ni    schedule 12.10.2012    source источник


Ответы (1)


Нет, это невозможно главным образом потому, что UIBarButtonItem не является подклассом UIView.

Приведение его к UIButton или UIView не работает, потому что приведение не преобразует объект из одного типа в другой. Это просто позволяет вам сообщить компилятору, что какая-то переменная может рассматриваться как какой-то другой тип (если эта переменная на самом деле не принадлежит к этому другому типу, вы получите исключение или она просто не будет работать).

UIBarButtonItem является подклассом UIBarItem (который является подклассом NSObject) и предназначен для использования только в UIToolbar или UINavigationBar.

Я не рекомендую пытаться поместить UIToolbar в выноску только для того, чтобы использовать UIBarButtonItem.
Вот похожий обходной путь с использованием UISegmentedControl, но сегментированный элемент управления также может выглядеть неправильно в выноске.

Я предлагаю использовать обычную UIButton с пользовательским изображением или с кнопкой типа UIButtonTypeContactAdd (синий кружок со знаком плюс).

person Community    schedule 12.10.2012
comment
В итоге я создал UIButton с UIBUttonTypeCustom с изображением быстро сделанной кнопки сохранения. Спасибо. - person Martol1ni; 12.10.2012