2011-05-04 3 views
0

Хорошо, вот сценарий:Управление звуком с помощью контроллера главного представления из UITableViewController с помощью @protocol?

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

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

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

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

То, что я не могу сделать, это управлять звуком после исчезновения popover с элементами управления, которые находятся на моем основном контроллере. (play/stop/volume)

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

@protocol SongChooserDelegate

- (недействительными) didTap: (NSData *) данные; < ------------ Я предполагаю, что здесь

@end

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

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

ответ

0

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

//UITableViewController.h

@protocol SongChooserDelegate

- (Недействительными) didTap: (NSURL *) songUrl;

@end

//UITableView.m

  • (пустоты) viewDidLoad { [self.player prepareToPlay];

    // Справочник по объектам NSString * путь = [NSHomeDirectory() stringByAppendingPathComponent: @ "Documents"]; NSError * error = nil; NSArray * array = [[NSFileManager defaultManager] contentsOfDirectoryAtPath: ошибка пути: & ошибка]; if (array == nil) { // Обработать ошибку } self.songs = array;

    [super viewDidLoad];

}

  • (пустоты) Tableview: (UITableView *) Tableview didSelectRowAtIndexPath: (NSIndexPath *) indexPath {

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

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

    [self.delegate сделалTap: url];

    }

//ViewController.h

@interface ViewController: UIViewController < SongChooserDelegate, AVAudioPlayerDelegate>

//ViewController.m

- (недействительными) didTap: (NSURL *) songUrl {

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

[player prepareToPlay];

 Смежные вопросы

  • Нет связанных вопросов^_^