iOS 自定义View视图刷新策略

1.刷新数据

####不可以在View创建的过程中使用属性值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self setupSubViews];
}
return self;
}
- (void)setupSubViews
{//把属性值在view创建的过程中赋给空间 是错误的
if (self.monthDate) {
[_monthButton setTitle:self.monthDate forState:UIControlStateNormal];
}
}

####正确的做法 在view创建完成后主动调用自定义的refreshi方法刷新

1
2
3
4
5
6
7
- (void)refreshDate
{
//默认时间
if (self.monthDate) {
[_monthButton setTitle:self.monthDate forState:UIControlStateNormal];
}
}

刷新subViews

从父视图移除 属性类的子视图需要赋空

1
2
3
4
5
6
7
8
9
10
11
12
13
14
-(void)clear
{
_valueArr = nil;
_descArr = nil;
[_showInfoView removeFromSuperview];//先移除子视图的子视图
[self.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];//一句代码移除所有子视图
//属性类子视图 需要赋空 不然容易出错
_showInfoView = nil;
_pieForeView = nil;
}