iOS: Как автоматически остановить звуковой файл на PickerViewController, когда пользователь выбирает новый сборщик? - PullRequest
0 голосов
/ 03 января 2012

У меня один музыкальный проигрыватель с несколькими звуками.Мой вопрос: когда я выбираю один из объектов в окне выбора, он будет воспроизводиться автоматически, но когда я выбираю новый, старый звук не останавливается.Звук будет совпадать с новым.Как мне это остановить?Вот мой код для устранения неполадок:

H Файл:

#import <UIKit/UIKit.h>
#import <AVFoundation/AVAudioPlayer.h>

@interface musixGreetingViewController : UIViewController <UIPickerViewDelegate, UIPickerViewDataSource, AVAudioPlayerDelegate>{

    UIPickerView       *picker;
    UILabel            *musicTitle;
    NSMutableArray     *musicList;
    AVAudioPlayer      *audioPlayer;


}


@property (nonatomic, retain) IBOutlet UIPickerView *picker;
@property (nonatomic, retain) IBOutlet UILabel *musicTitle;
@property (nonatomic, retain) NSMutableArray *musicList;

-(IBAction)playSelectedMusic:(id)sender;


@end

M Файл:

    - (void)viewDidLoad
    {
        [super viewDidLoad];
         musicList = [[NSMutableArray alloc] initWithObjects:@"m1",@"m2",@"m3",@"m6",@"m4", @"m5",nil];
    }

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component


{

    //[self playSelectedMusic:self];

    if ([[musicList objectAtIndex:row] isEqual:@"m1"])
    {

        NSString *path = [[NSBundle mainBundle] pathForResource:@"m1" ofType:@"mp3"];
        AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];

        pickerView.delegate = self;
        [theAudio play];

        NSString *resultString = [[NSString alloc] initWithFormat:
                                  @"m1",
                                  [musicList objectAtIndex:row]];
        musicTitle.text = resultString;


    }


    if ([[musicList objectAtIndex:row] isEqual:@"m2"])
    {

        NSString *path = [[NSBundle mainBundle] pathForResource:@"m2" ofType:@"mp3"];
        AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];

        pickerView.delegate = self;
        [theAudio play];



        NSString *resultString = [[NSString alloc] initWithFormat:
                                  @"m2",
                                  [musicList objectAtIndex:row]];
        musicTitle.text = resultString;


    }

-(IBAction)playSelectedMusic:(id)sender{

I want the music play here, how to do so without autoplay the music in the picker view?

}

1 Ответ

0 голосов
/ 03 января 2012

Это вернет игрока к началу:

[theAudio setCurrentTime:0.0];
...