Ios 防止AVAudioPlayers同时播放
我有一个包含几个单元格的UITableView,每个单元格都有一个按钮,可以触发在子类单元格中创建的Ios 防止AVAudioPlayers同时播放,ios,objective-c,avaudioplayer,Ios,Objective C,Avaudioplayer,我有一个包含几个单元格的UITableView,每个单元格都有一个按钮,可以触发在子类单元格中创建的AVAudioPlayer。每个单元格代表一个人,点击按钮即可播放其音频文件 现在,当我点击第一排时,它会像它应该的那样播放。但是当我点击第二排时(第一排还在播放),很明显,它会同时播放两个。如果第一排正在播放,我想停下来 我试图在我的视图控制器中创建YBCell的属性,如果一行播放声音,它会停止其他单元格播放,并将自身指定给该属性。这样,第一次它将是nil YBCell.m - (IBActio
AVAudioPlayer
。每个单元格代表一个人,点击按钮即可播放其音频文件
现在,当我点击第一排时,它会像它应该的那样播放。但是当我点击第二排时(第一排还在播放),很明显,它会同时播放两个。如果第一排正在播放,我想停下来
我试图在我的视图控制器中创建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];
}
问题是,当我在-(void)stopPlaying
中选中self.playingCell
时,它总是返回nil
。另外,对于每个单元格使用indexPath.row
标记,而不是整个单元格,也不起作用,因为它总是返回0
如果没有一个直接的答案,我可能会尝试在视图控制器中创建一个音频播放器,并让单元格共享它,虽然我认为最好让每个单元格都有自己的播放器。看起来您正在创建新对象YBCell,并通过对象(AVaudioPlayer)播放来自YBViewController的歌曲。在应用程序委派中声明您的AVaudioplayer,并从YBCell&YBViewController中访问它。最好在视图控制器中创建播放器。。。