2015-05-26 45 views
0

我已經將按鈕標記傳遞給另一個Viewcontroller。 它通過了,但是當我打電話像上選擇的按鈕播放音頻播放任何其他方法,播放器不能正常工作......AVAudioPlayer不能在另一個視圖控制器中工作

我曾嘗試下面的代碼: 它通過按鈕的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]; 
} 
+0

你找到解決方案 – Spynet

+0

您可以發佈您的代碼實現的球員? –

+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推薦的命名約定。

0

使用Segues時,您應該在prepareForSegue中傳遞值。 更新您的代碼像

- (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; 
    } 
} 
相關問題