我有一個主 - 從應用程序。在MasterViewController
中點擊tableView
的每個單元導航到DetailViewController
,您可以在其中下載並播放音頻文件。我在保持單個的AVAudioPlayer
實例時遇到問題,因此來自多個單元的不同文件不會同時播放。解決之前,我的remoteControlReceivedWithEvent
工作正常,我可以管理所有視圖控制器上的事件。無remoteControlReceivedWithEvent中的值
現在解決這個問題,我的播放器只能同時播放一個文件,所以如果我碰巧回到MasterViewController
,然後選擇另一行並輸入另一個單元格並開始播放,它會停止第一個文件並開始第二個。但目前的問題是試圖使用控制中心,而用戶在其他地方撥出DetailViewController
,remoteControlReceivedWithEvent
,但值爲nil
,所以沒有任何反應。這是我的同時能夠檢測該行現在在我cellForRowAtIndexPath:
玩,並強調它的MasterViewController
如下:
if (entry.audioManager && [entry.audioManager soundPlayer].isPlaying)
{
equalizer.hidden = NO;
[self animateTheEqualizer];
}
但是我不能當場在remoteControlReceivedWithEvent
,因爲我沒有給指數的任何訪問。
我已經包含canBecomeFirstResponder
等等,我相信這只是table view
瞭解哪個文件正在播放的混淆。一切工作正常,如果我在DetailViewController
嘗試這個,但在另一個VC或甚至在後臺不在外面。
- (void)remoteControlReceivedWithEvent:(UIEvent *)event {
//if it is a remote control event handle it correctly
if (event.type == UIEventTypeRemoteControl)
{
if (event.subtype == UIEventSubtypeRemoteControlPlay)
{
[entry.audioManager playAudio];
// [[NIKDetailViewController sharedController].feedEntry.audioManager playAudio];
}
else if (event.subtype == UIEventSubtypeRemoteControlPause)
{
[entry.audioManager pauseAudio];
}
else if (event.subtype == UIEventSubtypeRemoteControlTogglePlayPause)
{
[entry.audioManager togglePlayPause];
}
else if (event.subtype == UIEventSubtypeRemoteControlBeginSeekingBackward)
{
[entry.audioManager rewindTheAudio];
}
else if (event.subtype == UIEventSubtypeRemoteControlBeginSeekingForward)
{
[entry.audioManager fastForwardTheAudio];
}
}
}
,在我AudioManager
類:
- (void)playAudio
{
//Play the audio and set the button to represent the audio is playing
if ([soundPlayer isPlaying])
{
[soundPlayer pause];
[self deleteTimer];
}
else
{
[self createTimer];
[soundPlayer play];
}
[self refreshButton];
// [[NIKMasterViewController sharedController] markEntryAsPlaying:detailViewController.feedEntry];
}
- (void)pauseAudio
{
//Pause the audio and set the button to represent the audio is paused
[soundPlayer pause];
[self deleteTimer];
[self refreshButton];
}
我應該手動markAsNowPlaying
還是有我可以用這個來找出正確的索引,並避免讓nil
的委託方法?
尊敬的@downvoter,請您按下該箭頭按鈕後花時間解釋您對downvote的理由。 – Neeku