我有一個UITableView與幾個單元格,每個單元格都有一個按鈕,它會觸發在子類別單元格中創建的AVAudioPlayer
。每個單元代表一個人,並在按鈕上點擊他們的音頻文件被播放。防止AVAudioPlayers同時播放
現在,當我點擊第一行時,它就像它應該玩。但是當我點擊第二排(而第一排仍在播放)時,它顯然會同時播放它們。如果正在播放,我想停止第一行。
我試圖在我的視圖控制器中創建一個YBCell
的屬性,如果一行播放聲音,它會停止播放其他單元並將其自身分配給該屬性。這種方式第一次將是nil
。
YBCell.m
- (IBAction)playOrStop:(id)sender
{
if (thisCellIsPlaying)
{
[self.audioPlayer stop];
thisCellIsPlaying = FALSE;
}
else
{
YBViewController *vc = [[YBViewController alloc] init];
[vc stopOtherCellPlaying];
[self.audioPlayer play];
[vc setPlayingCell:self];
thisCellIsPlaying = TRUE;
}
}
YBViewController.h
@property (strong, nonatomic) YBCell *playingCell;
- (void)stopPlaying;
YBViewController.m
- (void) stopPlaying
{
[self.playingCell.audioPlayer stop];
}
問題是,當我檢查self.playingCell
在-(void) stopPlaying
它總是返回nil
。而不是整個單元格,使用indexPath.row
每個單元的標記不起作用,因爲它總是返回0.
如果沒有直接的答案,我可能會嘗試在視圖控制器中創建一個音頻播放器,讓細胞分享吧,但我認爲讓每個細胞都有自己的球員會更好。
你最好在視圖控制器中創建播放器... – ChenSmile