Я создаю приложение с iPod-подобными элементами управления (воспроизведение, пауза и т. Д.). Приложение имеет tableView с именами дорожек в каждой ячейке. У меня есть MainViewController
с UITableView
и обычным классом UITableViewCell
. Элементы управления проигрывателем находятся в MainViewController
.Наблюдатель NSNotification в пользовательском UITableViewCell?
У меня также есть кнопка воспроизведения/паузы в каждой ячейке. Я успешно настроил NSNotifications
, чтобы опубликовать уведомление, когда кнопка воспроизведения нажата в ячейке, поэтому информация о дорожке отправляется методу наблюдателя и респондента в MainViewController
, и инициируются элементы управления проигрывателем (управляемые MPMoviePlayerController
).
Это работает, но как только трек играет, я не могу понять, как сделать кнопку воспроизведения/паузы в ячейке «зеркальным отображением» кнопки воспроизведения/паузы в элементах управления iPod. Я не думаю, что добавление NSNotification observer
в каждую ячейку - правильный способ сделать это.
Дополнительная информация: Изображение кнопки воспроизведения/паузы в проигрывателе MainViewController
определяется методом, который срабатывает каждую половину секунды и проверяет playbackstate
MPMoviePlayerController
. Если вы играете, кнопка воспроизведения проигрывателя воспроизводится. Если он приостановлен, он устанавливает изображение паузы. Я думаю, что реализация также установит, что кнопка play/pause tableCell будет здесь.
Редактировать Этот метод вызывается всякий раз, когда состояние воспроизведения изменяется (через NSNotification) в моем UITableViewController. (playButton
- кнопка воспроизведения/паузы в элементах управления плеером, а не воспроизведение/пауза в ячейке таблицы, в которой я пытаюсь выполнить обновление в соответствии с состоянием воспроизведения).
- (void) updateViewForPlayerState
{
// Change playButton image depending on playback state
[playButton setImage:((moviePlayer.playbackState == MPMoviePlaybackStatePlaying) ? pauseBtnBG : playBtnBG) forState:UIControlStateNormal];
}
Стоит ли переписывать 'reloadData' каждый раз при изменении состояния воспроизведения? – mnort9
'reloadData' только перезагружает данные для видимых ячеек. Таким образом, этот подход эффективен. – mnort9