Вопрос по avplayer, xcode, audio, iphone – Как использовать AVPlayer в многократном просмотре и возобновлении контроля?

0

я создаю приложение с xcode 4.6 на iOS 6.1 с TabBar и 2 различными tableView.

Каждое табличное представление считывает строку из файла file.plist, и когда вы нажимаете на строку, вы загружаете DetailView. DetailViewController такой же для 2 TableView, но:

Если запустить приложение, нажмите на первую кнопку, я вижу FirstView с моей таблицей и списком аудио, если я выберу один файл в списке, я загружаю детальный вид и слушаю мой файл очень хорошо, но если теперь нажать на второй вид на TabBar, я могу начать играть другой аудиофайл из второго представления, но я слушаю оверлей для первого звука, а AVplayer не переопределяет.

Там моя кодировка:

Из таблицы загрузки таблицы TableView:

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

Здесь поступают проблемы, этот код работает очень хорошо, но если нажать тапо на панели вкладок и загрузить другое аудио из другого списка, я слушаю аудио оверлей.

Как можно использовать AVPlayer в Override theNSURL *url = [NSURL URLWithString:[saved objectForKey:@"audio"]];когда изменить с вкладки?

Благодарю.

Ваш Ответ

1   ответ
3

Решено, используя этот код:

В моем AppDelegate .h добавление

@interface AppDelegate : UIResponder  {

    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, где в приложении!

Надеюсь это поможет любым парням;)

Похожие вопросы