2013-04-15 68 views
0

我使用TabBar和2個不同的tableView在iOS 6.1上創建了一個帶有xcode 4.6的應用程序。如何在多個視圖中使用AVPlayer並恢復控制?

每個表視圖都從file.plist中讀取一行,當點擊一行時,就會載入一個DetailView。 DetailViewController是相同的2 TableView,但:

如果啓動應用程序點擊第一個按鈕我看到FirstView與我的表和音頻列表,如果我選擇列表中的一個文件我加載詳細信息視圖和偵聽器我的文件很好,但如果現在點擊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]]; 
    } 
} 

在detali觀點:

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]; 
    } 
} 

這裏傳入的問題,這段代碼的工作非常goog,但如果TAPO在標籤欄上並加載來自其他plist的其他音頻我聽音頻覆蓋。

如何使用AVPlayer覆蓋NSURL *url = [NSURL URLWithString:[saved objectForKey:@"audio"]];當從標籤欄更改?

謝謝。

回答

3

解決,使用此代碼:

在我的AppDelegate的.h加入

@interface AppDelegate : UIResponder <UIApplicationDelegate> { 

    AVPlayer *MyPlayer; 
} 

@property (strong, nonatomic) AVPlayer *MyPlayer; 
在我的AppDelegate .M

didFinishLaunchingWithOptions加入

[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在APP中的哪裏!

我希望這個幫助任何人;)

相關問題