#protocols #uitableview #avaudioplayer #popover
#протоколы #uitableview #avaudioplayer #всплывающее окно
Вопрос:
Хорошо, вот сценарий:
Я использую AVAudioPlayer.
Я пытаюсь выбрать и воспроизвести песню из UITableView, которая отображается как всплывающее окно.
Ресурсы mp3 расположены в каталоге «Мои документы».
Я могу заполнить табличное представление и при выборе строки воспроизвести этот конкретный ресурс.
Чего я не могу сделать, так это управлять звуком после исчезновения всплывающего окна с элементами управления, которые находятся на моем главном контроллере просмотра. (воспроизведение/остановка/громкость)
У меня есть @protocol, который делает всплывающее окно делегатом, может ли кто-нибудь помочь мне с синтаксисом метода, который будет использоваться в моем протоколе?
@протокол SongChooserDelegate Сонгчусерделегата
-(недействительный) didTap:(NSData *) данные; <———— Я предполагаю, что здесь
@end
Если это не сработает — что будет?
Спасибо, любая помощь была бы с благодарностью принята …. это мой последний шаг в создании моего приложения для моей выпускной диссертации, которая должна быть сдана в пятницу!!!!! eeeek.
Ответ №1:
Мне потребовалось некоторое время, но я наконец понял это: если кому-нибудь нужны пояснения или весь код, дайте мне знать.
//UITableViewController.h
@протокол SongChooserDelegate Сонгчусерделегата
-(недействительный) didTap:(NSURL *)songUrl;
@end
//UITableView.m
-
(недействительно)viewDidLoad { [self.player prepareToPlay];
// Указать на каталог документов NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@»Documents»]; NSError *error = nil; NSArray *array = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:ошибка пути:amp;error]; if (array == nil) { // Обработать ошибку } self.songs = array;
[super viewDidLoad];
}
-
(недействительно)TableView: (UITableView *)TableView выбрал значение indexPath: (NSIndexPath *)indexPath {
UIAlertView * показывает выбор; NSString * сообщение; message = [[Выделение NSString] initWithFormat:@»% @», [индексация объекта songs:indexPath.row]]; showSelection = [[Выделение UIAlertView] initWithTitle:@»Выбранная дорожка» сообщение: делегирование сообщения: nil cancelButtonTitle:@»OK» Другие названия кнопок: nil]; [showSelection показать]; [showSelection release]; [выпуск сообщения];
NSString *applicationDocumentsDirectory = [NSSEARCHPATH fordirectoriesindomains(NSDocumentDirectory, NSUserDomainMask, ДА) lastObject]; NSString *Путь к файлу = [Строка applicationDocumentsDirectory, добавляющая компонент пути: [песни objectAtIndex:indexPath.row]]; NSURL *url = [NSURL fileURLWithPath:путь к файлу];
[self.delegate didTap:url];
}
//ViewController.h
@interface ViewController: UIViewController < SongChooserDelegate, AVAudioPlayerDelegate > UIViewController <Настройка SongChooserDelegate, настройка AVAudioPlayerDelegate >
//ViewController.m
-(недействительный) didTap:(NSURL *)songUrl{
player = [[AVAudioPlayer alloc]initWithContentsOfURL:songUrl error:nil];
[подготовка проигрывателя к воспроизведению];
}