我有一个自定义tableViewCell
,其中包含自定义UIView
。在我的cellForRowAtIndexPath
中,我分配并初始化我的自定义UIView
并检查UIView
对象的地址。我的自定义UIView
类还有一个名为createArray的方法,我从cellForRowAtIndexPath
调用它,它为我提供了一个用CGPoints
创建路径的数组。我还在createArray方法的末尾检查了我的UIView地址,它与我最初初始化UIView之后检查的内容一致。 createArray方法工作正常,并为我提供了一个有效的数组。但是,在方法执行完毕后,会立即调用layoutSubviews
。当我到达layoutSubviews
时我注意到的是我的UIView
地址正在改变,我创建的用于创建路径的数组变为零。有谁知道发生了什么事?
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString* identifier = @"audioTableCell";
OSAudioTableCell *cell = [self.audioTable dequeueReusableCellWithIdentifier:identifier];
if(cell == nil)
{
cell = [[OSAudioTableCell alloc] initWithStyle: UITableViewCellStyleDefault reuseIdentifier: identifier];
}
self.waveView = [[OSWaveView alloc] init];
NSLog(@"self.view address %@", self.waveView);
[self.waveView createArray:transferredAsset andSetSize:cell.waveView.bounds.size];
}
-(void) layoutSubviews
{
if (!self.blueWave) {
self.blueWave = [self createShapeLayer];
self.blueWave.strokeColor = [UIColor blueColor].CGColor;
self.redWave = [self createShapeLayer];
self.redWave.strokeColor = [UIColor redColor].CGColor;
[self.layer addSublayer:self.blueWave];
[self.layer insertSublayer:self.redWave above:self.blueWave];
[self render];
}
}
layoutSubviews
是重新初始化我的视图还是有一些背景方法被执行导致一切都变为零?另外,我认为这可能与我的UIView在故事板中是一个IBOutlet并手动分配/初始化有关。