Objective-C 如何在点击单元格按钮时播放声音?
Objective-C How to play a sound when a cell's button is tapped?
我在每个单元格上都有一个按钮,当点击该按钮时,我想为每个单元格播放数组中的不同音频文件。
我不知道如何为我的 table 视图单元实现 sounds/audio 文件数组。
我的 UITableViewCell
上有一个按钮插座和动作。但我不确定如何在 tableview.m 中初始化我的 AVaudioplayer
,特别是在:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell22";
下面我插入了一张我想要实现的项目的图片。
image1
你可以这样试试:
导入AVFoundation.framework
将此代码放在 didSelectRowAtIndexPath
方法中
NSString *soundPath = [[NSBundle mainBundle] pathForResource:@"your sound name" ofType:@"mp3"];
NSURL *soundUrl = [NSURL fileURLWithPath:soundPath];
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundUrl error:nil];
[玩家游戏];
注意:将您的音频文件添加到项目中,然后将名称放入一个数组中。然后您可以使用基于 indexPath
.
的音频名称
如果您想在 tableViewCell
中的按钮点击时播放声音,请将标签作为 indexPath
添加到该按钮,并在 cellForRowAtIndexPath
方法中像这样向按钮添加操作
button.tag = indexPath.row;
[button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
并在按钮操作中粘贴相同的代码。但使用 sender.tag
而不是 indexPath.row
-(void)buttonPressed:(UIButton *)sender
{
NSString *soundName = [yourArray objectAtIndex:sender.tag];
NSString *soundPath = [[NSBundle mainBundle] pathForResource:soundName ofType:@"mp3"];
NSURL *soundUrl = [NSURL fileURLWithPath:soundPath];
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundUrl error:nil]; [player play];
}
现在检查我更新了代码:播放声音
1.create 属性 在您的 AVAudioPlayer 的 .h 或 .m 文件中。喜欢
@property (strong, nonatomic) AVAudioPlayer *audioPlayer;
- 在 .m 文件中声明
<AVAudioPlayerDelegate>
和
@synthesize audioPlayer;
3.implement 此代码在 :
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:
(NSIndexPath *)indexPath{
yourSoundArray=[NSArray arrayWithObjects:@"sss",@"sss",@"sss",@"sss",@"sss",@"sss", nil];//dont include formate type
NSString *audioPath = [[NSBundle mainBundle] pathForResource: [yourSoundArray objectAtIndex:indexPath.row] ofType:@"mp3"];
NSLog(@"%@",audioPath);
NSURL *audioURL = [NSURL fileURLWithPath:audioPath];
NSError *audioError = [[NSError alloc] init];
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:audioURL error:&audioError];
audioPlayer.delegate=self;
if (!audioError) {
NSLog(@"playing!");
audioPlayer play];
}
else {
NSLog(@"Error!");
}
4.
-(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
NSLog(@"%d",playing the audio);
}
快乐编码其工作请检查:
Mate 你主要需要用到两个东西
第一次导入 AVFounfation.framwork
第二次执行代码 id "didSelectRowAtIndexPath"
更多细节
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *selectedCell=[tableView cellForRowAtIndexPath:indexPath];
NSLog(@"%@",selectedCell.textLabel.text);
AVAudioPlayer *audioPlayer101;
if ([_detailPhrases isEqualToString:@"Basics"]){
NSArray *soundArray = [NSArray arrayWithObjects:@"cellTapSound", @"Second", nil];
NSString *audioPath = [[NSBundle mainBundle] pathForResource: [soundArray objectAtIndex:indexPath.row] ofType:@".mp3"];
NSURL *audioURL = [NSURL fileURLWithPath:audioPath];
NSError *audioError = [[NSError alloc] init];
audioPlayer101 = [[AVAudioPlayer alloc] initWithContentsOfURL:audioURL error:&audioError];
if (!audioError) {
[audioPlayer101 play];
NSLog(@"playing!");
}
else {
NSLog(@"Error!");
}
}
}
我在每个单元格上都有一个按钮,当点击该按钮时,我想为每个单元格播放数组中的不同音频文件。
我不知道如何为我的 table 视图单元实现 sounds/audio 文件数组。
我的 UITableViewCell
上有一个按钮插座和动作。但我不确定如何在 tableview.m 中初始化我的 AVaudioplayer
,特别是在:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell22";
下面我插入了一张我想要实现的项目的图片。 image1
你可以这样试试:
导入
AVFoundation.framework
将此代码放在
didSelectRowAtIndexPath
方法中NSString *soundPath = [[NSBundle mainBundle] pathForResource:@"your sound name" ofType:@"mp3"];
NSURL *soundUrl = [NSURL fileURLWithPath:soundPath];
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundUrl error:nil]; [玩家游戏];
注意:将您的音频文件添加到项目中,然后将名称放入一个数组中。然后您可以使用基于 indexPath
.
如果您想在 tableViewCell
中的按钮点击时播放声音,请将标签作为 indexPath
添加到该按钮,并在 cellForRowAtIndexPath
方法中像这样向按钮添加操作
button.tag = indexPath.row;
[button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
并在按钮操作中粘贴相同的代码。但使用 sender.tag
而不是 indexPath.row
-(void)buttonPressed:(UIButton *)sender
{
NSString *soundName = [yourArray objectAtIndex:sender.tag];
NSString *soundPath = [[NSBundle mainBundle] pathForResource:soundName ofType:@"mp3"];
NSURL *soundUrl = [NSURL fileURLWithPath:soundPath];
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundUrl error:nil]; [player play];
}
现在检查我更新了代码:播放声音
1.create 属性 在您的 AVAudioPlayer 的 .h 或 .m 文件中。喜欢
@property (strong, nonatomic) AVAudioPlayer *audioPlayer;
- 在 .m 文件中声明
<AVAudioPlayerDelegate>
和
@synthesize audioPlayer;
3.implement 此代码在 :
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath: (NSIndexPath *)indexPath{
yourSoundArray=[NSArray arrayWithObjects:@"sss",@"sss",@"sss",@"sss",@"sss",@"sss", nil];//dont include formate type
NSString *audioPath = [[NSBundle mainBundle] pathForResource: [yourSoundArray objectAtIndex:indexPath.row] ofType:@"mp3"];
NSLog(@"%@",audioPath);
NSURL *audioURL = [NSURL fileURLWithPath:audioPath];
NSError *audioError = [[NSError alloc] init];
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:audioURL error:&audioError];
audioPlayer.delegate=self;
if (!audioError) {
NSLog(@"playing!");
audioPlayer play];
}
else {
NSLog(@"Error!");
}
4.
-(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
NSLog(@"%d",playing the audio);
}
快乐编码其工作请检查:
Mate 你主要需要用到两个东西
第一次导入 AVFounfation.framwork
第二次执行代码 id "didSelectRowAtIndexPath"
更多细节
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *selectedCell=[tableView cellForRowAtIndexPath:indexPath];
NSLog(@"%@",selectedCell.textLabel.text);
AVAudioPlayer *audioPlayer101;
if ([_detailPhrases isEqualToString:@"Basics"]){
NSArray *soundArray = [NSArray arrayWithObjects:@"cellTapSound", @"Second", nil];
NSString *audioPath = [[NSBundle mainBundle] pathForResource: [soundArray objectAtIndex:indexPath.row] ofType:@".mp3"];
NSURL *audioURL = [NSURL fileURLWithPath:audioPath];
NSError *audioError = [[NSError alloc] init];
audioPlayer101 = [[AVAudioPlayer alloc] initWithContentsOfURL:audioURL error:&audioError];
if (!audioError) {
[audioPlayer101 play];
NSLog(@"playing!");
}
else {
NSLog(@"Error!");
}
}
}