我正在为我的应用程序设计一个自定义 UIView。
UIView 将由以下组件组成:
- UI搜索栏
- UITableView
我的初始化程序如下:
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
_searchBar = [[UISearchBar alloc]initWithFrame:CGRectZero];
_tableView = [[UITableView alloc]initWithFrame:CGRectZero];
_tableView.dataSource = self;
[super addSubView:_searchBar];
[super addSubView:_tableView];
// Initialization code
}
return self;
}
我打算在 layoutsubviews 方法中设置 _searchBar 和 _tableView 的框架。
但我认为我将 _tableView 添加到 super 的方式是错误的。因为在 _tableView 添加到子视图的那一刻,_tableView 的数据源方法就会被触发。这甚至发生在自定义类本身的创建之前。
这是一个正确的设计吗?
我可以按以下方式在 layoutSubviews 中单独添加 _tableView 吗?
-(void)layoutSubViews{
//Adjust frame
[_tableView removeFromSuperView];
[self addSubView:_tableView];
}