AVAudioPlayer不在另一个viewcontroller中工作

时间:2015-05-26 05:23:15

标签: ios objective-c avaudioplayer

我已将按钮标记传递给另一个Viewcontroller。 它已经通过,但当我打电话给任何其他方法,如播放音频播放所选按钮时,播放器无法正常工作......

我试过下面的代码: 它将按钮的id传递给另一个视图。我在哪里构建播放器并且基于按钮ID我想在其他视图和控制功能上播放一首诗,如音量控制,进度条,持续时间,播放,推送,下一个等... 虽然我正在给一个特定按钮id的方法来播放诗歌,但它不起作用......

这下面的代码在我构建播放器的另一个视图中播放一首诗。     `

- (IBAction)btnpoemclicked:(id)sender {
    btnPressed = [NSString stringWithFormat:@"%li", (long)[sender tag]];

NSLog(@"selected poem -%@",btnPressed);

    PlayerController *pl=[[PlayerController alloc] init];
    pl.btnPressed=btnPressed;
    [pl setBtnPressed:pl.btnPressed];
    [self performSegueWithIdentifier:@"player"  sender:sender];
}

2 个答案:

答案 0 :(得分:0)

实施按钮操作,例如

- (IBAction)buttonPoemClicked:(id)sender {

    [self performSegueWithIdentifier:@"Player" sender:sender];
}

通过实施prepareForSegue传递你的价值,

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    if ([segue.identifier isEqualToString:@"Player"]) {

      PlayerController *playerController = (PlayerController *)segue.destinationViewController;
      playerController.pressedButtonTag = [NSString stringWithFormat:@"%li", (long)[sender tag]];
    }
}

附加说明:尽量使您的变量/类名更容易理解,或尝试遵循Apple建议的命名约定。

答案 1 :(得分:0)

使用prepareForSegue时,您应该在Segues中传递值。 更新您的代码,如

- (IBAction)btnPoemClicked:(id)sender {
    btnPressed = [NSString stringWithFormat:@"%li", (long)[sender tag]];
    [self performSegueWithIdentifier:@"player"  sender:self];
}

然后在prepareForSegue中将值传递给destinationViewController,就像这样

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"player"]) {
        PlayerController *playerController = (PlayerController *)segue.destinationViewController;
        playerController.btnPressed = btnPressed;
    }
}