如何在多视图和恢复控件中使用AVPlayer



我在iOS 6.1上用xcode 4.6创建了一个应用程序,该应用程序带有一个TabBar和两个不同的tableView。

每个表视图读取文件.plist中的一行,当点击一行时,加载一个DetailView。DetailViewController与2 TableView相同,但:

如果启动应用程序点击第一个按钮,我会看到带有我的表和音频列表的FirstView,如果我选择列表上的一个文件,我会加载一个Detail视图,并很好地收听我的文件,但如果现在点击TabBar上的第二个视图,我可以从第二个窗口开始播放其他音频文件,但我会收听第一个音频和AVplayer的覆盖,而不是覆盖。

我的编码:

从TableView加载plist:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if([@"detailList" isEqualToString:segue.identifier]) {
        NSIndexPath *index = [self.tableView indexPathForCell:sender];
        [[segue destinationViewController] setSaved:[loadData objectAtIndex:index.row]];
    }
}

从细节上看:

    if (mysound.rate == 1.0) {
        UIImage *img = [UIImage imageNamed:@"Play_BT.png"];
        [control setImage:img forState:UIControlStateNormal];
        [mysound pause];
    } else {
        UIImage *img = [UIImage imageNamed:@"Pause_BT.png"];
        [control setImage:img forState:UIControlStateNormal];
        NSURL *url = [NSURL URLWithString:[saved objectForKey:@"audio"]];
        mysound = [[AVPlayer alloc] initWithURL:url];
        [mysound setAllowsExternalPlayback:YES];
        [mysound setUsesExternalPlaybackWhileExternalScreenIsActive: YES];
        [mysound play];
    }
}

这里传入的问题,这个代码工作得很好,但如果在选项卡栏上点击并从其他plist加载其他音频,我会听音频覆盖。

从选项卡更改时,如何在覆盖NSURL *url = [NSURL URLWithString:[saved objectForKey:@"audio"]];中使用AVPlayer?

谢谢。

已解决,使用以下代码:

在我的AppDelegate.h中添加

@interface AppDelegate : UIResponder <UIApplicationDelegate> {
    AVPlayer *MyPlayer;
}
@property (strong, nonatomic) AVPlayer *MyPlayer;

didFinishLaunchingWithOptions内的AppDelegate.m中添加

[MySound superclass];

现在可以直接在.m文件中使用以下代码在所有应用程序中调用方法:

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
NSURL *url = [NSURL URLWithString:[saved objectForKey:@"link"]];
appDelegate.MySound = [[AVPlayer alloc] initWithURL:url];
[appDelegate.MySound setAllowsExternalPlayback:YES];
[appDelegate.MySound setUsesExternalPlaybackWhileExternalScreenIsActive: YES];
[appDelegate.MySound play];

有了这个方法,现在可以控制AVPlayer evry在应用程序中的位置了!!

我希望这能帮助任何人;(

最新更新