UISearchDisplayController, какова ссылка на UITableView? - PullRequest
0 голосов
/ 04 ноября 2011

Если у меня есть несколько UITableViews и UISearchBar с UISearchDisplayController, в методах делегата и источника данных UITableView, как мне получить ссылку на UITableView для поиска?Спасибо.

1 Ответ

2 голосов
/ 05 ноября 2011

получите ссылку на ваш UISearchDisplayController либо через розетку, подключенную к вашему файлу NIB, либо при программном создании панели поиска.Когда у вас есть ссылка, во всех ваших источниках данных и методах делегатов вы можете просто проверить, какой из таблиц передается, и действовать соответствующим образом.Например:

- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    if (aTableView==self.searchDisplayController.searchResultsTableView) {
         // do something with the search data source
         self.searchDisplayController.active=NO;
    }else{
         // do something with the regular data Source
    }

    // present a view or other response to the selected row
}

вот как вы можете создать панель поиска и получить ссылку на UISearchDisplayController

-(UISearchBar *)searchBar{
    // Create a search bar
    if (searchBar==nil){
        UISearchBar *aSearchBar = [[[UISearchBar alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 44.0f)] autorelease];
        aSearchBar.autocorrectionType = UITextAutocorrectionTypeNo;
        aSearchBar.autocapitalizationType = UITextAutocapitalizationTypeNone;
        aSearchBar.keyboardType = UIKeyboardTypeAlphabet;
        aSearchBar.barStyle=UIBarStyleBlack;
        self.searchBar=aSearchBar;

        // Create the search display controller
        UISearchDisplayController *aSearchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar:self.searchBar contentsController:self] ;
        aSearchDisplayController.searchResultsDataSource = self;
        aSearchDisplayController.searchResultsDelegate = self;
        aSearchDisplayController.delegate=self;
        self.searchDisplayController=aSearchDisplayController;
        [aSearchDisplayController release];
    }
    return searchBar;

}

, а затем добавить ее в свой просмотр таблицыкак это:

self.tableView.tableHeaderView = self.searchBar;

Удачи

...