我想知道如何将UISearchBar添加到TableViewController中,而不是添加到表视图头中。
在某些情况下,我的现有搜索栏在滚动后会消失,我遇到了问题。我已经找到了让搜索栏“浮动”的方法,但在一些情况下,滚动后搜索栏仍然会消失。
在谷歌了这个问题后,我发现有些人已经把表视图标题中的搜索栏去掉了,以解决这个问题。如果您的表视图被添加到UIViewController中,这就相对容易了。但是,如何向不是TableViewController自动提供的表视图的子视图的TableViewController添加新视图(在本例中是搜索栏)呢?
iPad应用程序iOS 6
-Thanks Mike C.
发布于 2012-12-19 03:05:48
由于Stackoverflow和苹果开发者论坛都没有回应,我得到了Cocoahead爱达荷州分部的罗恩·亚当斯的帮助。基本上,我最终将UITableViewController更改为UIViewController,并手动添加了表视图和搜索栏。有点额外的工作,但它的效果很好!
发布于 2013-02-13 00:37:03
首先,使用故事板。将UIView对象添加到表头。然后,将您的UISearchBar放入UIView中。此外,您还需要将表视图控制器作为搜索栏的委托。将浮动代码放入viewDidLayoutSubviews中,而不是使用scrollViewDidScroll方法(或类似方法)。这在所有情况下都有效。我还调用了bringToFront,因为我使用了一个定制节标题,并且需要确保表头视图始终位于顶部。顶部的高度是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];
}https://stackoverflow.com/questions/13750088
复制相似问题