我尝试在启动时将数据传递到自定义uiview。 我按照概述的方法here。
我的UIView
-(instancetype)initWithCoder:(NSCoder *)aDecoder
{
if(self = [super initWithCoder:aDecoder])
{
[self initAudioPlayer];
}
return self;
}
- (void)initAudioPlayer
{
self.player = [[AVAudioPlayer alloc]initWithContentsOfURL:self.fileURL error:nil];
[self.player prepareToPlay];
}
我的ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.audioURL = [[NSBundle mainBundle] URLForResource:@"audio4" withExtension:@"wav"];
AudioControlsView *view = [[[NSBundle mainBundle] loadNibNamed:@"AudioControlView"
owner:self
options:nil] objectAtIndex:0];
if (view)
{
view.fileURL = self.audioURL;
}
[self.view addSubview:view];
}
当我这样做时,这个fileURL是零。
我可以使用它:
- (void)setFileURL:(NSURL *)fileURL
{
_fileURL = fileURL;
self.player = [[AVAudioPlayer alloc]initWithContentsOfURL:self.fileURL error:nil];
[self.player prepareToPlay];
}
但我不认为这是正确的方法。
答案 0 :(得分:2)
使用您现在拥有的代码,在设置fileURL之前会调用-initAudioPlayer
。
我将删除-initAudioPlayer
和所有初始化代码。您的-setFileURL:
访问者方法是正确的方法。