Я делаю подкласс UIView полностью в коде (без IB), назовем его ContentView .С этой точки зрения я уже настроил несколько проигрывателей для звуков и видео, а также несколько imageViews (ничего особенного).
Затем я планировал создать подкласс ContentView несколько раз по порядку.загрузить разные медиа для каждого просмотра.Все эти представления будут иметь один и тот же контроллер представления, поскольку интерфейс будет одинаковым для всех из них, изменится только контент (звуки, видео и изображения).
Поэтому мой подход к этой проблеме состоял в том, чтобы объявитьнесколько NSString *const
в ContentView .h и укажите их ключи / значения в файле реализации каждого представления подкласса ContentView в форме static NSString *const
, поскольку я буду использовать повторноони загружали разные медиа для каждого представления и не хотели их в глобальном пространстве имен.
Вот некоторый макет кода, который иллюстрирует то, о чем я говорю:
В ContentView.h
@interface ContentView : UIView {
NSString *const kSoundFile1;
NSString *const kSoundFile2;
NSString *const kSoundFileType;
NSString *const kMovieFile1;
NSString *const kMovieFile2;
NSString *const kMovieFileType;
NSString *const kImage1;
NSString *const kImage2;
и в ContentView.m, что-то в этом роде,
@implementation ContentView
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
NSString *filePath1 = [[NSBundle mainBundle] pathForResource: kSoundFile1
ofType: kSoundFileType;
NSURL *url1 = [[NSURL alloc] initFileURLWithPath:filePath1];
AVAudioPlayer *audioPlayer1 = [AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
[audioPlayer1 prepareToPlay];
[url1 release];
... и так далее, для остальных звуковых файлов и фильмов (за исключением изображений,для которого я использую imageNamed:
).
Затем в файле реализации каждого подкласса ContentView у меня есть только это:
@implementation ContentViewSubclass
static NSString *const kSoundFile1 = @"sound1";
static NSString *const kSoundFile2 = @"sound2";
static NSString *const kSoundFileType = @"wav";
static NSString *const kMovieFile1 = @"movie1";
static NSString *const kMovieFile2 = @"movie2";
static NSString *const kMovieFileType = @"mov";
static NSString *const kImage1 = @"image1.png";
static NSString *const kImage2 = @"image2.png";
@end
Я могу 'сделать эту работу.Нет ошибок или предупреждений компилятора, просто ничего не воспроизводится и не отображается.Я делаю что-то не так или это просто неправильный подход к проблеме?
Я был бы очень признателен за некоторые идеи.Заранее спасибо.