2015-05-05 63 views
5

因此,我目前正在嘗試用UISearchController替換我的其中一個項目中的取消搜索的searchDisplayController,並且我遇到了此問題。UISearchController關閉取消按鈕後取消按鈕

如果搜索中沒有結果(UITableView爲空),則整個ViewController將被取消。搜索結果不爲空時不會發生這種情況。我不想說清楚我沒有使用UITableViewController。相反,我有一個普通的VC,裏面有一個UITableView。

下面是我的一些代碼:

var resultSearchController = UISearchController() 
override func viewDidLoad() { 
    super.viewDidLoad() 
    self.resultSearchController = ({ 
     let controller = UISearchController(searchResultsController: nil) 
     controller.searchResultsUpdater = self 
     controller.dimsBackgroundDuringPresentation = false 
     controller.searchBar.sizeToFit() 
     controller.delegate = self 
     controller.searchBar.delegate = self 
     self.studentTable.tableHeaderView = controller.searchBar 
     return controller 
    })() 
    .... 
} 

現在,如果我添加此功能可將公式取消按鈕總是駁回VC。

func searchBarCancelButtonClicked(searchBar: UISearchBar) { 
    resultSearchController.active = false 
} 

那麼爲什麼設置searchController.active = false關閉VC呢?是否因爲它使用與VC相同的UITableView?我相信舊的searchDisplayController只會顯示一個正在使用的UITableView。如果是這種情況,有沒有辦法覆蓋dismissVC?

+0

會發生什麼'false',你點擊取消按鈕? – shim

+0

當它不包含它時,它只會在問題狀態沒有搜索結果時解除VC。如果它被包含,那麼當取消按鈕被擊中時它總是這樣做。 – boidkan

+0

它會在沒有搜索結果時解散,或者在沒有搜索結果時解散並且您取消了取消? – shim

回答

2

這也是發生在我身上。我解決問題的方法是通過更換:

resultSearchController.active = false 

resultSearchController.searchBar.text = "" 
    resultSearchController.searchBar.resignFirstResponder() 

我希望這可以幫助你時,你不包括線路設置`active`到:-)

+0

該解決方案使searchController仍然處於活動狀態,這意味着,如果您已將SearchBar附加到啓用了下拉到刷新的tableview,刷新指示器將不會可見;作爲替代解決方法,從超級視圖中刪除現有的searchBar並創建並附加新的tableview。 – Delorean