2015-11-07 5 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() 
    } 

Я пытаюсь сделать панель поиска спрятанный иными словами, сделать его похожим на стиль строки поиска в приложении «Примечания» iPhone, где вам нужно прокрутить таблицуView вниз, чтобы отобразить панель поиска. Есть ли способ, которым я могу это достичь? Как добавить добавление отрицательного ограничения, которое делает его скрытым под панелью навигации при загрузке 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

Вы могли бы добавить, что это с ommand следует выдавать только в том случае, если в первом разделе есть хотя бы одна строка. – appleitung

Смежные вопросы