UISearchBar不在TableViewController的表视图头中?

时间:2012-12-06 18:26:33

标签: ipad ios6 uitableview uisearchbar xcode4.5

我想了解如何将UISearchBar添加到TableViewController - 而不是表视图头。

在某些情况下滚动后,我现有的搜索栏消失了。我已经找到了使搜索栏“浮动”的方法,但是在几个角落的情况下,搜索栏在滚动后仍然会消失。

在Google上搜索此问题后,我发现有些人已从表格视图标题中取出搜索栏来处理此问题。如果将表视图添加到UIViewController,这相对容易。但是如何将新视图(在本例中为搜索栏)添加到TableViewController中 - 这不是TableViewController自动提供的表视图的子视图?

iPad app iOS 6

-Thanks 迈克C.

2 个答案:

答案 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和搜索栏。一点额外的工作,但效果很好!