我正在構建一個類似iPod的控件(播放,暫停等)的應用程序。該應用程序在每個單元格中都有帶有軌道名稱的tableView。我有一個MainViewController
與UITableView
和一個自定義UITableViewCell
類。播放器控件存在於MainViewController
中。定製UITableViewCell中的NSNotification觀察者?
我在每個單元格中還有一個播放/暫停按鈕。我已成功設置NSNotifications
以在單元格中按下播放按鈕時發佈通知,因此軌道信息將發送給MainViewController
中的觀察者和響應方法,並啓動播放器控件(由MPMoviePlayerController
驅動)。
這是有效的,但是一旦播放曲目,我無法弄清楚如何使單元格中的播放/暫停按鈕「鏡像」我的iPod控制中播放/暫停按鈕的狀態。我不認爲在每個單元中添加NSNotification observer
是正確的做法。
附加信息:MainViewController
播放器中的播放/暫停按鈕圖像由每半秒觸發一次的方法確定,並檢查MPMoviePlayerController
的playbackstate
。如果正在播放,則播放器按鈕將設置爲播放圖像。如果暫停,它會設置暫停圖像。我正在考慮執行也設置tableCell播放/暫停按鈕將在這裏。
編輯只要播放狀態在UITableViewController中更改(通過NSNotification),就會調用此方法。 (playButton
是播放器控件中的播放/暫停按鈕,而不是我試圖根據播放狀態更新的表格單元中的播放/暫停)。
- (void) updateViewForPlayerState
{
// Change playButton image depending on playback state
[playButton setImage:((moviePlayer.playbackState == MPMoviePlaybackStatePlaying) ? pauseBtnBG : playBtnBG) forState:UIControlStateNormal];
}
每次播放狀態改變時調用'reloadData'是否昂貴? – mnort9
'reloadData'只能重新加載可見單元格的數據。所以這種方法是有效的。 – mnort9