我想了解如何将UISearchBar添加到TableViewController - 而不是表视图头。
在某些情况下滚动后,我现有的搜索栏消失了。我已经找到了使搜索栏“浮动”的方法,但是在几个角落的情况下,搜索栏在滚动后仍然会消失。
在Google上搜索此问题后,我发现有些人已从表格视图标题中取出搜索栏来处理此问题。如果将表视图添加到UIViewController,这相对容易。但是如何将新视图(在本例中为搜索栏)添加到TableViewController中 - 这不是TableViewController自动提供的表视图的子视图?
iPad app iOS 6
-Thanks 迈克C.
答案 0 :(得分:1)
首先,使用故事板。将UIView对象添加到表头。然后,将您的UISearchBar放入UIView中。此外,您需要使表视图控制器成为搜索栏的委托。而不是使用scrollViewDidScroll方法(或类似),将浮动代码放入viewDidLayoutSubviews。这适用于所有情况。我也称为bringToFront,因为我使用自定义节标题,并且需要确保表标题视图始终位于顶部。顶部的UIEdgeInset是tableHeaderView的高度。
viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
CGRect frame=self.tableView.tableHeaderView.frame;
frame.origin.y=self.tableView.contentOffset.y;
if (frame.origin.y <= 0) {
frame.origin.y=0;
[self.tableView setContentInset:UIEdgeInsetsMake(0.0, 0.0, 0.0, 0.0)];
} else {
[self.tableView setContentInset:UIEdgeInsetsMake(48.0, 0.0, 0.0, 0.0)];
}
[self.tableView.tableHeaderView setFrame:frame];
[self.tableView bringSubviewToFront:self.tableView.tableHeaderView];
}
答案 1 :(得分:0)
由于无法从Stackoverflow或Apple开发者论坛做出回应,我得到了Cocoaheads爱达荷分部的Ron Adams的帮助。基本上,我最终将我的UITableViewController更改为UIViewController并手动添加tableview和搜索栏。一点额外的工作,但效果很好!