2015-11-07 88 views
3

我已經UISearchController()添加到我的UIViewController如下所示:如何使UISearchController()默認隱藏?

class SearchViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, UISearchResultsUpdating { 

let tableData = ["Here's", "to", "the", "crazy"] 
var filteredTableData = [String]() 
var resultSearchController = UISearchController() 

@IBOutlet var tableView: UITableView! 


override func viewDidLoad() { 
    super.viewDidLoad() 

    self.tableView.dataSource = self 
    self.tableView.delegate = self 
    self.resultSearchController = ({ 
     let controller = UISearchController(searchResultsController: nil) 
     controller.searchResultsUpdater = self 
     controller.dimsBackgroundDuringPresentation = false 
     controller.searchBar.sizeToFit() 

     self.tableView.tableHeaderView = controller.searchBar 

     return controller 
    })() 

    // Reload the table 
    self.tableView.reloadData() 
} 

... 的TableView功能 ...

func updateSearchResultsForSearchController(searchController: UISearchController) 
    { 
     filteredTableData.removeAll(keepCapacity: false) 

     let searchPredicate = NSPredicate(format: "SELF CONTAINS[c] %@", searchController.searchBar.text) 
     let array = (tableData as NSArray).filteredArrayUsingPredicate(searchPredicate) 
     filteredTableData = array as! [String] 

     self.tableView.reloadData() 
    } 

我試圖讓被隱藏搜索欄換句話說,使其類似於搜索欄樣式的「Notes」iPhone應用程序,您必須向下滾動tableView以顯示搜索欄。有沒有辦法實現這一目標?像添加一個負面的約束,使ViewController加載時隱藏在導航欄下面?

+0

http://stackoverflow.com/a/31595116/4475605 – Adrian

回答

6

發現了一個非常簡單的解決方案,以默認隱藏搜索欄,我找到了答案here

我只是需要加入這一行的viewDidLoad中():

tableView.scrollToRowAtIndexPath(NSIndexPath(forRow: 0, inSection: 0), atScrollPosition: UITableViewScrollPosition.Top, animated: false) 

更新斯威夫特3.0語法:

tableView.scrollToRow(at: IndexPath(row: 0, section: 0), at: .top, animated: false) 
+0

你可以添加該C只有在第一部分至少有一行的情況下才能發佈。 – appleitung