【发布时间】:2013-10-01 13:08:34
【问题描述】:
我正在尝试找出将 searchBar 和 activityIndicator 添加到 UITableView 顶部(分组)的正确方法。搜索可能需要几秒钟才能完成,我希望 activityIndicator 出现在 searchBar 上方的一行中,并在搜索完成后消失。搜索当前在后台执行。
我的方法是在 IB 中创建一个 UIView 作为 tableHeaderView,然后在 viewDidLoad 中创建一个 UISearchBar 并将其作为 subView 添加到 tableHeaderView。这很好用,我可能也可以在 IB 中这样做。
然后,当用户选择 searchBar 时,我将隐藏导航栏并在 searchBar 中显示“取消”按钮。
当用户点击搜索按钮时,我会执行以下操作:
- (void)showSearchActivityIndicator:(NSString*)title {
_activityView = [[ActivityViewController alloc] initWithNibName:@"ActivityViewController" bundle:nil];
[UIView beginAnimations:nil context: NULL];
[UIView setAnimationDuration:0.25];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
_activityView.view.frame = CGRectMake(0, 0, 320, 44);
_searchBar.frame = CGRectMake(0, 44, 320, 44);
self.tableView.tableHeaderView.frame = CGRectMake(0, 0, 320, 88);
[self.tableView.tableHeaderView addSubview: _activityView.view];
//[self.tableView setContentOffset:CGPointMake(0, -44)];
[_activityView show:title];
[UIView commitAnimations];
}
请注意,ActivityViewController 视图有一个 UIView,其中 UIActivityView 和一个 UILabel 作为子视图。
这里的问题是,当添加 ActivityViewController 视图时,我似乎无法弄清楚如何使 tableview 内容本身向下滚动。当 tableViewHeader 高度改变时,我希望 tableView 会自行调整,但这似乎没有发生。
使用 setContentOffset 似乎也会影响 tableViewHeader 的位置。
我在这里遗漏了什么,还是我的整个方法都错了?
编辑:添加了显示发生了什么的屏幕截图
【问题讨论】:
标签: uitableview uisearchbar uiactivityindicatorview