Управление аудио с помощью контроллера основного вида из UITableViewController с использованием @protocol? - PullRequest
0 голосов
/ 05 мая 2011

Хорошо, вот сценарий:

Я использую AVAudioPlayer.

Я пытаюсь выбрать и воспроизвести песню из UITableView, которая выглядит как поповер.

mp3ресурсы находятся в моем каталоге документов.

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

Что я не могу сделать, так это управлять звуком после всплывающего окнаисчез с элементами управления, которые находятся на моем главном контроллере вида.(воспроизведение / остановка / громкость)

У меня есть @protocol, который делает поповер делегатом, может ли кто-нибудь помочь мне с синтаксисом метода, который используется в моем протоколе?

@ protocolSongChooserDelegate

- (void) didTap: (NSData *) data;<------------ Я думаю, здесь </p>

@ end

Если это не сработает - что будет?

Спасибо, любая помощь будет принята с благодарностью .... это мой последний шаг в создании моего приложения для моей старшей диссертации в пятницу !!!!!eeeek.

1 Ответ

0 голосов
/ 05 мая 2011

Это заняло у меня некоторое время, но я наконец понял это: Если кому-то понадобится и объяснение, или весь код, дайте мне знать.

// UITableViewController.h

@ протокол SongChooserDelegate

- (void) didTap: (NSURL *) songUrl;

@ конец

// UITableView.m

  • (аннулируются) viewDidLoad { [self.player prepareToPlay];

    // Указывать на каталог документов NSString * path = [NSHomeDirectory () stringByAppendingPathComponent: @ "Документы"]; NSError * error = nil; NSArray * array = [[NSFileManager defaultManager] contentsOfDirectoryAtPath: ошибка пути: & ошибка]; if (array == nil) { // Обрабатываем ошибку } self.songs = array;

    [super viewDidLoad];

}

  • (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath {

    UIAlertView * showSelection; NSString * сообщение; сообщение = [[NSString alloc] initWithFormat: @ "% @", [song objectAtIndex: indexPath.row]]; showSelection = [[UIAlertView alloc] initWithTitle: @ «Выбранный трек» сообщение: делегат сообщения: ноль cancelButtonTitle: @ "OK" otherButtonTitles: nil]; [showSelection show]; [showSelection release]; [выпуск сообщения];

    NSString * applicationDocumentsDirectory = [NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; NSString * filePath = [applicationDocumentsDirectory stringByAppendingPathComponent: [songs objectAtIndex: indexPath.row]]; NSURL * url = [NSURL fileURLWithPath: filePath];

    [self.delegate didTap: url];

    }

// ViewController.h

@ interface ViewController: UIViewController

// ViewController.m

- (void) didTap: (NSURL *) songUrl {

 player = [[AVAudioPlayer alloc]initWithContentsOfURL:songUrl error:nil];

[player prepareToPlay];

* *} Тысяча сорок-девять
...