2011-06-23 55 views
1

我已經投入了很多精力來創造定製細胞堅實的UITableViewController。現在我想創建一個單獨的UITabbarItem,它使用UISearchDisplayController中的UITableViewController。使用UISearchDisplayController作爲超

秉承面向對象的設計原則,我想,定義UISearchDisplayController時,我會繼承原來的UITableViewController。

例如

@interface SearchViewController : CustomTableViewController 
{ 
    NSArray   *listContent;   // The master content. 
    NSMutableArray *filteredListContent; // The content filtered as a result of a search. 

    // The saved state of the search UI if a memory warning removed the view. 
    NSString  *savedSearchTerm; 
    NSInteger  savedScopeButtonIndex; 
    BOOL   searchWasActive; 
} 

但是這種方法沒有在所有的工作 - 不更新在所有SearchViewController細胞,似乎是UITableView的委託方法不產生效果(例如行未調整)。

所以我有幾個問題:

  1. 這是正確的方式去了解這一點,如果是的話,我怎麼從上海華更新的listContent和filteredListContent。

  2. 它會更好,只是一個UISearchBar添加到原來的搜索視圖,並根據需要將其隱藏?

回答

0

我不認爲你可以繼承UISearchDisplayController並使其正常工作。它在非公開的方法中做了很多事情,所以你不能用正確的行爲覆蓋它們。

可以,但是,使用內置的UISearchDisplayController與在搜索結果中您的自定義表格單元格,因爲是。您需要封裝您的自定義單元,使得它在任何表格視圖工作只是通過覆蓋-...的cellForRowAtIndexPath的創建和配置(這是在tableview中顯示自定義數據的標準方法)。確保控制器是UISearchDisplayDelegate,它將使用該方法在您的搜索列表中創建行。

要設置自定義高度,實現

- (void)searchDisplayController:(UISearchDisplayController *)controller willShowSearchResultsTableView:(UITableView *)searchTableView 

設置rowHeight的上searchTableView。

相關問題