如何使用按钮根据页码播放不同的声音?

How can I use a button to play different sounds depending the page number?

这里是编程新手。使用本指南设置我的页面:http://www.appcoda.com/uipageviewcontroller-storyboard-tutorial/

我用来播放音频的代码是:

NSString *path    = [[NSBundle mainBundle] pathForResource:@"1" ofType:@"mp3"];
theAudio          = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
theAudio.delegate = self;
[theAudio play];

我的目标是在按下按钮时播放不同的声音文件,每个声音对应于页码。该按钮在整个页面中都是不变的,只是试图更改将其连接到每个页面的新声音的代码。

您需要跟踪当前页面。委托方法 pageViewController:didFinishAnimating:previousViewControllers:transitionCompleted: 将告诉您用户是否更改了页面,因此您可以更新当前页码变量。它看起来像什么,

-(void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed
{

    if(completed)
    {

        //update variable and play the audio file respectively
    }
}  

您的代码中包含的信息不足。但我将解释一种将声音实现到应用程序中的简单方法,然后您可以在此基础上进行构建。

首先: 将 AudioToolbox 框架导入您的项目。然后,将声音文件拖放到您的项目中。导航到视图控制器并导入 header 文件:

#import <AVFoundation/AVFoundation.h>

您的视图控制器 header 应类似于此:

@interface ViewController : ParentClass {
    AVAudioPlayer *_audioPlayer1;
}

然后,我们将声明一个按钮,我们将在故事板上放置并连接该按钮。请记住,IBOutlet 通常总是很弱。

@property (weak, nonatomic) IBOutlet UIButton *button1;
- (IBAction)playSound;

现在,在你的播放声音方法中,添加这个(希望你已经意识到在故事板中创建一个按钮和 link 插座和 IBAction):

- (IBAction)playSound
NSString *path = [[NSBundle mainBundle] pathForResource:"nameofsound" ofType:@"wav(or other ext)"];

NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: path];

    _audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil];
    [_audioPlayer prepareToPlay];
    [_audioPlayer play];
}

现在,关于页面:UITableView 有一个名为 pageViewController:didFinishAnimating:previousViewControllers:transitionCompleted: 的委托。利用那个。理论上它看起来像:

-(void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed
{

}

那时我将所有声音加载到一个数组中,索引对应于页码,