隐藏的UISearchBar作为内部的UITableView头取消被触摸时(Hide UISearc

2019-09-29 17:38发布

我已经集成了一个UISearchDisplayController到我的控制器的厦门国际银行。 基本功能我要为是在导航栏,显示的搜索显示在表头中的搜索栏和按钮。

什么我卡上:当取消被触摸时,我要让搜索栏不可见(保持桌面所以索引0是显示在顶部,而不是搜索栏),但它仍然显示我不知道为什么(见第3图像)。 任何想法如何始终保持在取消按钮被触摸隐藏搜索栏(见图片1)。

我已经试过:

  1. 设置的tableview contentOffset至44其中一期工程开始。
  2. 调用[的tableview scrollToRowAtIndexPath:...],这似乎并没有做任何事情。

Answer 1:

尝试这个:

- (void)viewWillAppeared:(BOOL)animated
{
        [self hidesSeachBar];
        [super viewWillAppeared:animated];
}

- (void)hidesSearchBar
{
        CGSize searchSize = self.searchDisplayController.searchBar.bounds.size;
        //not complete
        [self.tableView setContentOffset:CGPointMake(0, searchSize.height)];
}

- (void) searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller
{
    //Your code

    [self.tableView reloadData];
    [self hidesSearchBar];
}


Answer 2:

如果你已经宣布你的搜索栏像一个属性

@property(nonatomic, retain)UISearchBar *searchBar;

你可以设置

tableView.tableheader = nil;

并设置回

tableView.tableHeader = searchBar;

当你将再次需要它。



Answer 3:

设置内容偏移是隐藏的方式,你需要做的是,当搜索结束。 我使用的是这样的:

- (void) searchDisplayControllerWillEndSearch:(UISearchDisplayController*)controller
{
    [self hideSearchBar];
}


- (void) hideSearchBar
{
    self.table.contentOffset = CGPointMake( 0, self.searchBar.frame.size.height );  
}


Answer 4:

隐藏你必须将其设置为灭活UISearchDisplayController的搜索栏。 这将重新显示导航栏,以及

在你的情况,你必须确保采取UISearchBarDelegate协议,则:

- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
{
    [self.searchDisplayController setActive:NO animated:YES];
}


Answer 5:

要隐藏取消搜索栏,你需要调用UISearchBarDelegate方法:

(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
{
    if(searchTask)[searchTask cancel];

    [self.searchResults removeAllObjects];
    [self.searchDisplayController.searchResultsTableView reloadData];

   //reload you table here
}

谢谢



文章来源: Hide UISearchbar as header inside UITableview when cancel is touched