配置TableViewCell以播放音频

时间:2012-07-05 23:10:01

标签: uitableview avaudioplayer xcode4.3

当在视图控制器中按下按钮时,我有一个当前播放5秒声音的应用程序。我试图将此设置更改为如果我有一个tableview,触摸特定单元格并播放声音。我不想要你选择单元格的动作,它会推到另一个窗口播放声音。我只是想让声音在细胞触摸时播放。

目前,对于我的按钮设置,我在视图控制器中播放声音:

在SoundLibViewController.h

//识别与声音文件相关联的UIButton

-(IBAction)CarHorn:(id)sender;

@end

在SoundLibViewController.m

-(IBAction)CarHorn:(id)sender {
    CFBundleRef mainBundle = CFBundleGetMainBundle();
    CFURLRef soundFileURLRef;
    soundFileURLRef = CFBundleCopyResourceURL(mainBundle, (CFStringRef) @"CarHorn", CFSTR ("wav"), NULL);

    UInt32 soundID;
    AudioServicesCreateSystemSoundID(soundFileURLRef, &soundID);
    AudioServicesPlaySystemSound(soundID); 
}

不幸的是,我无法在网上找到任何帮助,指出我要将我的代码更改为包含tableviewcell的方向。

举一个我想要做的例子:你进入你的iPhone / iPad并在你选择“声音”的设置下。然后你选择“铃声”,它会带你到一个声音列表。如果您按下与其播放的声音相关的单元格。这就是我想要做的。

1 个答案:

答案 0 :(得分:0)

UITableViewDelegate

中需要这样的内容
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
        NSString * soundName = [self.soundNames objectAtIndex: indexPath.row]; // Assuming you have an array of sound names

        CFBundleRef mainBundle = CFBundleGetMainBundle();
        CFURLRef soundFileURLRef;
        soundFileURLRef = CFBundleCopyResourceURL(mainBundle, (CFStringRef)soundName, CFSTR ("wav"), NULL);

        UInt32 soundID;
        AudioServicesCreateSystemSoundID(soundFileURLRef, &soundID);
        AudioServicesPlaySystemSound(soundID); 
}