使用自定义参数

时间:2016-02-14 22:35:02

标签: ios objective-c uiview

我尝试在启动时将数据传递到自定义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];
}

但我不认为这是正确的方法。

1 个答案:

答案 0 :(得分:2)

使用您现在拥有的代码,在设置fileURL之前会调用-initAudioPlayer

我将删除-initAudioPlayer和所有初始化代码。您的-setFileURL:访问者方法是正确的方法。