我已将按钮标记传递给另一个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];
}
答案 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;
}
}