Изменение (не init) идентификатор UIBarButtonItem программно?

В IB я могу установить идентификатор UIBarButtonItem для 'игрения', который добавляет изображение кнопки воспроизведения (указывающий направо треугольник).

Существует ли способ изменить это изображение программно? Я хочу изменить его для 'приостанавливаний', когда кнопка воспроизведения нажимается.

Я знаю, что можно инициализировать UIBarButtonItem с идентификатором, но я должен все же найти способ изменить его после того, как он был инициализирован. Это даже возможно?

Единственная вещь, о которой я могу думать, состоит в том, чтобы удалить старую кнопку и инициализировать новую в его месте, но это едва кажется эффективным.

Какие-либо мысли?

10
задан Cœur 21 January 2019 в 04:18
поделиться

1 ответ

Ok Я до смерти загуглил этот вопрос и наткнулся на примеры кода от Apple, где они делают точно такую же вещь (переключение воспроизведения/паузы графической кнопки на кнопке панели инструментов). Но вместо встроенных идентификаторов воспроизведения и паузы UIBarButtonItem они используют пользовательский UIButton и переключают пользовательские изображения.

Итак, если Apple пошла на создание и переключение пользовательских изображений на UIButton вместо встроенных кнопок play и pause UIBarButtonItem, то я думаю, можно с уверенностью сказать, что нет способа программно изменить идентификатор UIBarButtonItem.

Вот что они (Apple) делают для переключения изображений при нажатии кнопки:

// Call this when the button you want to toggle is pressed:
[playButton setImage:((p.playing == YES) ? pauseBtnBG : playBtnBG) forState:UIControlStateNormal];

Замените p.playing на любой BOOL, который вы хотите использовать для определения состояния вашей кнопки. playButton - это пользовательская UIButton на панели инструментов. pauseBtnBG и playBtnBG - это изображения для переключения.

14
ответ дан 3 December 2019 в 15:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: