2016-12-20 58 views
2

UISearchController的默認行爲似乎是在UISearchBar中輸入字符後立即顯示一個空表。我正在執行的搜索不會在輸入字符時進行搜索,而是會在搜索按鈕被點擊時進行搜索。直到搜索按鈕被點擊後才顯示UISearchController表

因此,我不想顯示一個空表,直到實際搜索發生。我如何做到這一點?

我試着設置隱藏的表,直到搜索按鈕被點擊,但它似乎並不像表中出現的那樣與UISearchController表相同,因爲沒有任何數據源方法被調用表。

+0

我對你的搜索按鈕有點困惑,你是否使用searchbar.showSearchResultsButton在其他地方啓動搜索或定製的uibutton? – MDB983

+0

我的導航欄中有一個UIBBarButtonItem,它是一個UIBarButtonSystemItemSearch類型的系統項目。當它被點擊時,我會呈現'UISearchController'。這將顯示變暗的背景,並在導航欄上顯示搜索欄。在搜索欄中鍵入字符時,顯示空表視圖背景。我不想讓空表出現,直到我實際上點擊屏幕上的鍵盤上的搜索按鈕。 – timgcarlson

+0

@ MDB983爲了進一步理解我的意思,您可以在標準iOS日曆的搜索欄中看到它發生的情況。直到找到搜索結果才顯示錶格。 – timgcarlson

回答

1

您看到的空表視圖來自您的搜索結果控制器,當用戶在搜索欄中輸入文本時,它將被UISearchController「立即」顯示出來。 (source

將表格視圖隱藏在搜索結果控制器中,直到您準備好顯示它爲止似乎是最簡單的解決方案。但是,正如您發現的,在顯示搜索結果控制器時,UISearchController將根視圖上的isHidden屬性的值設置爲false。在我的調試會話中,每次搜索欄開始編輯或搜索文本發生更改時,UISearchController都會以這種方式運行,方法是調用名爲_updateVisibilityOfSearchResultsForSearchBar:的私有方法。

您可以通過在搜索結果控制器中添加表視圖作爲根視圖的子視圖(然後根據需要隱藏或顯示錶視圖)或通過調整alpha屬性的值來解決該問題根視圖(與isHidden不同,可以製作動畫)。

+0

不幸的是,這並沒有解決我的問題。從文檔:'此屬性只控制是否原始視圖控制器最初被遮蔽。當用戶在搜索欄中輸入文本時,搜索控制器會立即顯示搜索結果控制器的結果。「第二句話是我試圖避免的場景。 – timgcarlson

+0

看起來像設置表視圖的alpha值是什麼竅門(我只是試圖將它設置爲隱藏之前)。因此,現在我將它初始設置爲0,直到它們實際搜索並清除文本,然後在搜索時將其設置爲1。如果你更新你的答案,賞金就是你的全部! – timgcarlson

+0

感謝您的幫助,歡呼! – timgcarlson

0

在這種情況下,你可以像創建一個UIView一樣工作,並在tableview中添加子視圖來隱藏它。一旦用戶點擊搜索按鈕,刪除該視圖。

+0

我不認爲這會起作用,因爲我只想調暗背景視圖,以便在搜索欄中輸入時仍然可見。也許我誤解了你的解決方案......謹慎分享一個例子? – timgcarlson