首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >iPhone:默认隐藏UITableView搜索栏

iPhone:默认隐藏UITableView搜索栏
EN

Stack Overflow用户
提问于 2009-07-04 02:45:24
回答 15查看 74K关注 0票数 85

我使用Interface Builder创建了一个表视图,并在其中添加库的搜索栏和搜索显示控制器以添加搜索功能。但是,IB对其进行了设置,以便在第一次显示视图时,该条显示在屏幕顶部。

我想知道如何在默认情况下隐藏搜索栏,但仍然可以在表视图中滚动(参见Apple的Mail应用程序的示例)。我尝试在viewDidLoad中调用scrollRectToVisible:animated:来向下滚动表视图,但无济于事。默认情况下隐藏搜索栏的首选方式是什么?

EN

回答 15

Stack Overflow用户

回答已采纳

发布于 2009-07-06 09:55:54

首先,要确保将UISearchBar添加到UITableView的tableHeaderView中,以便它与表的内容一起滚动,而不是固定在视图的顶部。

搜索栏不会被计入表视图中的一行,所以如果你将表视图的顶部滚动到第一行,它会“隐藏”搜索栏:

代码语言:javascript
复制
[yourTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:NO];

或者在Swift中:

代码语言:javascript
复制
yourTableView.scrollToRowAtIndexPath(NSIndexPath(forRow: 0, inSection: 0), atScrollPosition: UITableViewScrollPosition.Top, animated: false)

确保在包含数据之前不要滚动表视图(如果给定的indexPath没有指向有效行(即如果表视图为空),scrollToRowAtIndexPath将引发异常)。

票数 116
EN

Stack Overflow用户

发布于 2012-03-09 18:55:34

不要将UISearchBar添加为UITableView的子视图,这是不必要的。

UITableView有一个tableHeaderView属性,非常适合这样做:

代码语言:javascript
复制
- (void) viewDidLoad {
    [super viewDidLoad]; 
    self.searchBar = [[[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)] autorelease];
    self.searchBar.showsCancelButton = YES;    
    self.searchBar.delegate = self;
    self.tableView.tableHeaderView = self.searchBar;     
}

如果您不想默认看到它:

代码语言:javascript
复制
- (void) viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self.tableView setContentOffset:CGPointMake(0, 44)];
}

我还获得了取消按钮,以再次隐藏它...(并移除键盘)

代码语言:javascript
复制
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar {
    [self.tableView setContentOffset:CGPointMake(0, 44) animated:YES];
    [self.searchBar resignFirstResponder];
}
票数 45
EN

Stack Overflow用户

发布于 2016-09-20 07:01:29

对于Swift 3+

我这样做了:

声明此var

代码语言:javascript
复制
    var searchController = UISearchController()

viewDidLoad()方法中

代码语言:javascript
复制
    searchController = UISearchController(searchResultsController: nil)
    searchController.searchResultsUpdater = self
    searchController.hidesNavigationBarDuringPresentation = false
    searchController.dimsBackgroundDuringPresentation = true
    searchController.searchBar.placeholder = NSLocalizedString("Search", comment: "")
    definesPresentationContext = true
    tableView.tableHeaderView = searchController.searchBar

    tableView.contentOffset = CGPoint(x: 0, y: searchController.searchBar.frame.size.height)
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1081381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档