2011-05-13 34 views
3

回來時,我正在使用基於本教程UISearchDisplayController後searchResultsTableView: http://developer.apple.com/library/ios/#samplecode/TableSearch/Introduction/Intro.html表視圖不再從細節圖

我有一個表視圖中與搜索控制器導航控制器。和往常一樣,您可以搜索,點擊搜索結果並轉到詳細視圖。

我正在使用像下面這樣的代碼來檢測當前表視圖是否爲searchResultsTableView。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    if(tableView == self.searchDisplayController.searchResultsTableView) 
     return 1; 
    else 
     return [self.arrCharacters count]; 
} 

我的問題是,當用戶來自詳細視圖到搜索結果表視圖回首,那的tableView成爲普通表視圖,而不是searchResultsTableView了。但表格仍然被過濾,只顯示搜索結果。只是tableView不再被識別爲searchResultsTableView。所以我所有的索引計算都出錯了,應用崩潰了。

任何幫助是極大的讚賞。

非常感謝,要解決這種情況

+1

你在這個例子中還改變了什麼?很難在這裏幫助你,無需繼續。你有兩個問題:1)你做了一些使searchDisplayController.active == NO的例子,2)你沒有完全維護2個模型,以便通過2個不同的表顯示,但是通過1個代表/數據源。 – bshirley 2011-06-02 01:06:55

回答

0

一種替代的方法是設置一個標誌,你的表是searchResultTableView或只是正常的tableView。例如,當用戶確實搜索到任何機會時,將您的標誌設置爲true,並保留該值,除非用戶單擊取消或任何其他方式完成搜索。由於您使用searchDisplayController,委託方法

-(void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller

將在搜索結束時調用,這樣你就可以更改標誌值,表示正常表。基於這個標誌值,你可以把if語句放在tableView委託方法中,以你想要的方式設置表。但是,當我嘗試在應用中檢查與您的案例相同的情況(搜索並單擊表格單元格中的一個並返回到上一個表格)時,tableView仍然保持爲searchResultTableView。