ios 自定义cell的属性 为什么会是null
1个回答
展开全部
在做ios项目的过程中,有时会发现运行后内容不显示。加了断点,查出问题出在对象根本没有获取到传递的值。从程序运行的顺序依次检查,一种情况是赋值时值本身就是空的,还有就是赋值对象没有初始化,本人犯的错误属于后者。
上述情况出在简单的赋值问题上,在自定义UITableViewCell变量时常犯的错误是:自定义UITableViewCell时复写了父类的初始化方法,该方法和视图控制器中初始化的方式不一致,导致单元格创建失败,内容自然不能显示。
举个正确的例子:
在视图控制器中:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
MovieCell *cell = [tableView dequeueReusableCellWithIdentifier:iden];
if(cell == nil){
cell = [[MovieCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:iden];
}
cell.backgroundColor = [UIColor clearColor];
cell.movieModel = _movieModels[indexPath.row];
return cell;
}123456789
在自定义的UITableViewCell类中,类名为MovieCell
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if(self){
//自定义单元格
[self _initCell];
}
return self;
}123456789
总结:在类中定义的实例变量使用之前一定要初始化;自定义UITableViewCell时复写的父类的初始化方法,要和视图控制器中的初始化方式一致。
上述情况出在简单的赋值问题上,在自定义UITableViewCell变量时常犯的错误是:自定义UITableViewCell时复写了父类的初始化方法,该方法和视图控制器中初始化的方式不一致,导致单元格创建失败,内容自然不能显示。
举个正确的例子:
在视图控制器中:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
MovieCell *cell = [tableView dequeueReusableCellWithIdentifier:iden];
if(cell == nil){
cell = [[MovieCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:iden];
}
cell.backgroundColor = [UIColor clearColor];
cell.movieModel = _movieModels[indexPath.row];
return cell;
}123456789
在自定义的UITableViewCell类中,类名为MovieCell
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if(self){
//自定义单元格
[self _initCell];
}
return self;
}123456789
总结:在类中定义的实例变量使用之前一定要初始化;自定义UITableViewCell时复写的父类的初始化方法,要和视图控制器中的初始化方式一致。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询