アプリのカスタムUIViewを設計しています。
UIViewは、以下のコンポーネントで構成されます。
- UISearchbar
- 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];
}