tutorial searchcontroller example bar iphone cocoa-touch uiviewcontroller uisearchdisplaycontroller

iphone - searchcontroller - Cómo implementar UISearchDisplayController en un UIViewController sin Interface Builder



uisearchcontroller ios (2)

Aquí está el código que uso. Pon esto en viewDidLoad de un UIViewController que ejemplifica su propio UITableView. Creo que la parte que está buscando es agregar la barra de búsqueda como vista de encabezado de la vista de tabla.

UISearchBar * theSearchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0,0,320,40)]; // frame has no effect. theSearchBar.delegate = self; if ( !searchBarPlaceHolder ) { searchBarPlaceHolder = @"What are you looking for?"; } theSearchBar.placeholder = searchBarPlaceHolder; theSearchBar.showsCancelButton = YES; self.theTableView.tableHeaderView = theSearchBar; UISearchDisplayController *searchCon = [[UISearchDisplayController alloc] initWithSearchBar:theSearchBar contentsController:self ]; self.searchController = searchCon; [searchCon release]; searchController.delegate = self; searchController.searchResultsDataSource = self; searchController.searchResultsDelegate = self; [searchController setActive:YES animated:YES]; [theSearchBar becomeFirstResponder];

Tengo un UIViewController que tiene una UITableView agrupada como una propiedad. I instancia el UITableView en código y no uso IB. Me gustaría conectar un UISearchDisplayController a él, pero no puedo encontrar ningún ejemplo de cómo se podría hacer esto.

Esto es lo que tengo. // Implementé UISearchDisplayDelegate en el archivo de encabezado

//SearchBar UISearchBar *searchBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0, 0, 320, 45)]; searchBar.barStyle=UIBarStyleBlackTranslucent; searchBar.showsCancelButton=NO; searchBar.autocorrectionType=UITextAutocorrectionTypeNo; searchBar.autocapitalizationType=UITextAutocapitalizationTypeNone; searchBar.delegate=self; UISearchDisplayController *mySearchDisplayController = [[UISearchDisplayController alloc ]initWithSearchBar:searchBar contentsController:self]; self.searchDisplayController = mySearchDisplayController; //Error here ?? self.searchDisplayController is ReadOnly and can''t assign [self.searchDisplayController setDelegate:self]; [self.searchDisplayController setSearchResultsDataSource:self]; [mySearchDisplayController release]; [myDisplayController release];

Esto no parece funcionar, la UIViewController searchDisplayController del UIViewController parece ser de solo lectura y no puedo conectar myDisplayController a ella. Realmente no estoy seguro de si esta es la manera correcta de hacerlo.

He estado buscando en todo google para encontrar algún consejo o tutorial sobre cómo usar un UISearchDisplayController en UIViewController . Todos los ejemplos que pude encontrar fueron cómo implementarlo en UITableViewController utilizando IB, que no es la forma en que quiero usarlo.

¿Alguien puede explicar cómo podría hacer que esto funcione?


Ver los documentos de Apple:

@property(nonatomic, readonly, retain) UISearchDisplayController *searchDisplayController

Discusión: esta propiedad refleja el valor de la salida searchDisplayController que estableció en Interface Builder. Si crea su controlador de pantalla de búsqueda mediante programación, el controlador de visualización de búsqueda establece esta propiedad automáticamente cuando se inicializa .