В настоящее время я работаю над аудиоприложением на iPhone. Он основан на примере кода Apple SpeakHere с пользовательским входным файлом из библиотеки iPod.
Вот событие, вызванное кнопкой:
- (IBAction) btn_PickSong_Clicked:(id)sender{
[self showMediaPicker];
//code importing tracks from library
}
А в методе showMediaPicker:
//Yup the program does reach this method but the picker does not show up
- (void)showMediaPicker {
MPMediaPickerController* mediaPicker = [[[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeMusic] autorelease];
mediaPicker.delegate = self;
[self presentModalViewController:mediaPicker animated:YES];
}
Проблемы:
Функция импорта библиотеки прекрасно работает в отдельной программе, но средство выбора мультимедиа больше не отображается, когда я помещаю код в SpeakHereController.mm
.
Также, если я помещаю метод showMediaPicker в другой класс и вызываю его, он также не работает.
Что-то, что мне кажется уместным:
Исходный код находится в файле obj-C (xxx.m), и теперь он переносится в файл obj-C ++ (xxx.mm).
Я также изменил базовый класс SpeakHereController.h
с NSObject
на UIViewController<MPMediaPickerControllerDelegate>
, иначе будет выдано предупреждение о том, что базовый класс не содержит требуемого делегата. Но в конструкторе интерфейса он по-прежнему отображается как объект (см. Пример кода SpeakHere).
Кажется, что незаконно конвертировать встроенный файл xxxViewController.m
в файл obj-C ++ (расширение .mm). В этом случае будет много ошибок, если я попытаюсь это сделать. Это правда? Если да, то как включить код C ++ в чистый файл obj-C?
=============
Так как же я могу сделать так, чтобы в этом случае появлялся медиа-сборщик? Любое понимание будет оценено.
Большое спасибо!
Приветствия
* * Manca тысяча сорок-девять