2012-10-05 31 views
4

我知道有一個屬性searchDisplayController.searchBar.showsScopeBar,但我發現即使我們設置showsScopeBar爲NO,但其searchDisplayController.searchBar.scopeButtonTitles屬性設置爲一些陣列,範圍欄顯示與指定的標題。將showsScopeBar設置爲YES,將scopeButtonTitles設置爲nil,則不顯示scopeBar是什麼讓searchDisplayController顯示scopeBar?

所以,我覺得showsScopeBar屬性是真的不是有用的,但顯示或實際上取決於我們是否將數組scopeButtonTitles財產藏匿scopeBar

這可能嗎?還是我缺少別的東西。

+1

關於scopeButtonTitles(從'UISearchBar.h'報頭):'@property(非原子,複製)的NSArray * scopeButtonTitles NS_AVAILABLE_IOS(3_0); // NSStrings數組。沒有範圍欄 顯示,除非有2個或更多項目 – kervich

回答

0

首先,要準確,showsScopeBar和scopeButtonTitles 是的UISearchBar類的屬性。

它是這樣的:

  • 如果scopeButtonTitles具有價值(S)和showsScopeBar ==一旦用戶點擊了搜索文本框NO
    範圍按鈕纔會出現。

  • 如果scopeButtonTitles具有價值(S)和showsScopeBar == YES
    按鈕顯示在用戶點擊了搜索文本框,甚至之前的範圍。
    (相當難看,不走這條路)

  • 如果scopeButtonTitles是零
    範圍按鈕不會不管showsScopeBar值或用戶交互的顯示。 「搜索欄」控制器
    點擊,進入「屬性檢查器」選項卡:

您可以使用Interface Builder發揮它。

1

確保您的UISearchBar有空間來擴大顯示範圍欄時進入。我將UISearchBar放在一個320x44px的固定框架中,當範圍欄打開時,它沒有空間可見(320x88px),我犯了一個錯誤。此外,UISearchBar在表格的標題視圖中也必須被告知刷新。

[self.tableView beginUpdates]; 
[self.searchBar setShowsScopeBar:YES]; 
[self.tableView endUpdates];