如何在Swift中通过操作显示/隐藏UISearchBar?

时间:2015-06-24 17:32:45

标签: ios swift uisearchbar

我有UITableView UISearchBar。我需要通过用户操作(按下按钮)显示/隐藏我的searchBar

我尝试使用此代码:

if self.tableView.contentOffset.y == 0 {
    self.tableView.contentOffset = CGPoint(x: 0.0, y: self.searchBar.frame.size.height) 
}

来自this问题。 其实我已经尝试了所有这些答案。所有这些都只是滚动我的UITableView,每次我滚动UITableView - searchBar时都会出现。 我试着做这样的事情:

self.newsTableView.tableHeaderView = nil; //Hide 

self.newsTableView.tableHeaderView = self.SearchBar; //Show

UITableView不想返回searchBar;

如何解决此问题? 我需要按操作隐藏searchBar,而不是滚动我的UITableView(隐藏searchBar.hidden = true}实际上,searchBar.hidden = true有效,但有一个空格而不是{{1 }}

3 个答案:

答案 0 :(得分:2)

对searchBar和tableView使用UIView.animation 当您开始滚动表 更改搜索栏的位置/ alpha和tableView的高度

UIView.animateWithDuration(1.0, animations: {
          searchBar.alpha = 0.0
          tableView.view.frame.height = CGRect(x: 0, y: 0, width: UIScreen.mainScreen().bounds.width, height: UIScreen.mainScreen().bounds.height)
                    }, completion: {
                        (value: Bool) in
                        //do nothing after animation
                })

答案 1 :(得分:2)

在ViewController.swift文件的Xcode 7.3中,它适用于我

CategoryTableView.tableHeaderView = searchController.searchBar // show

CategoryTableView.tableHeaderView = nil // hide
searchController.active = false

答案 2 :(得分:1)

希望这可以解决您的问题。在启动tableview时调用它来隐藏searchBar,当你向下滚动它时会出现

var newBounds: CGRect? = self.newsTableView.bounds
    newBounds?.origin.y = 0
    newBounds?.origin.y = newBounds!.origin.y + self.searchBar.bounds.size.height

然后设置tableView的新边界