2012-10-11 45 views
1

我的ViewController是一個自定義UIViewController <UITableViewDataSource, UITableViewDelegate, UISearchBarDelegate, UISearchDisplayDelegate>。我已經設置了UISearchBar來顯示一個範圍欄。UISearchBar與模板表單中的ScopeBar

我一旦實例化視圖控制器,然後顯示通過[self presentModalViewController:mySearchController fromView:self.view];

現在點播相同的視圖,當我配置視圖控制器將被顯示爲一個形式表,範圍欄出現僅在第一次的視圖被顯示。下一次不顯示範圍欄。

將視圖顯示爲頁面工作正常。然而,在這種情況下,我發現第一次範圍欄已經就位,而之後它一旦成爲第一響應者就會在搜索欄中生成動畫。

我沒有任何成功地擺弄檢查器中的視圖和控制器設置。

是什麼導致了這種行爲?

如何在下一次顯示視圖時讓範圍欄出現在表單中?

當隱藏/重新顯示視圖時,是否有辦法阻止UISearchBar進入不同的狀態?

回答

0

在搜索delegate中設置範圍欄標題以便開始編輯,並在搜索結束時將其設置爲nil。在此方法之後立即添加showScopeBar方法。嘗試並檢查是否有幫助。

對於如: -

- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar { 
    [searchBar setScopeButtonTitles:[NSArray arrayWithObjects:@"Title1", @"Title2", nil]]; 
    [searchBar setShowsScopeBar:YES]; 
    //... 
} 

而且在didEndEditing

- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar { 
    [searchBar setScopeButtonTitles:nil]; 
    [searchBar setShowsScopeBar:NO]; 
    //.. 
} 

除此之外,只要你想顯示你可以用上面的線來顯示和隱藏它的scopebar。

+0

Wee ...直到現在,我已經在界面構建器中設置了範圍欄標題。按照你的建議以編程方式執行它並不能解決問題,但是:我將標題設置爲不同的值,而BINGO則運行。然後我又回到正確的數值,並再次被打破。發生什麼了?我清理了該項目,刪除了緩存並重置了模擬器,仍然是相同的行爲。對於我的原始價值和一些細微的修改:no-no;對於其他值:罰款。 STH。奇怪的是在下面。因此,在一個新項目中,您的解決方案很可能會出現作品。任何想法,爲什麼這是必要的? – ilmiacs

+0

我不確定這種行爲。嘗試刪除IB中的標題集,並在此情況下以編程方式進行。這可能是問題。 – iDev

+0

是的,我確實刪除了已經從IB獲得的標題並在此之後清理了緩存。仍然沒有運氣。無論如何,我已經爲標題字符串添加了空格('@「XYZ」'而不是'@「XYZ」'),它解決了我的問題。謝謝。 – ilmiacs