2010-07-28 13 views
5

Duplicar posibles:
How to add serach bar in navigation bar for iPhone¿Cómo agregar barra de búsqueda en la barra de navegación para iphone?

Este es el código para mostrar la barra de búsqueda, pero quiero poner esto en la barra de navegación

sBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0,10,320,30)]; 

sBar.delegate = self; 

[self.view addSubview:sBar]; 
//[self.navigationItem.rightBarButtonItem addSubview:sBar]; 
//self.navigationItem.rightBarButtonItem=sBar; 

¿hay alguna manera?

+0

Ya tienes otro par de preguntas que te preguntan lo mismo. –

Respuesta

1

Puede proporcionar una vista personalizada para la sección del título de una barra de navegación. Eche un vistazo a UINavigationController y especialmente a la sección Actualización de la barra de navegación.

El controlador de navegación actualiza la medio de la barra de navegación como sigue:

Si el nuevo controlador de vista de nivel superior tiene una vista título personalizado, la barra de de navegación muestra que ven en lugar de la vista de título por defecto. Para especifique una vista de título personalizada, establezca la propiedad titleView de de la vista elemento de navegación del controlador.

+0

lo hice self.navigationItem.titleView = sBar; está funcionando pero mi búsqueda() no está funcionando hice esto bsBar.delegate = self; ahora me falta algo más – ram

+0

En iPad Con esto, los resultados se muestran en un popover en lugar de en el área de vista de tabla original. ¿Alguna solución para esto? – Norbert

24

Agregue la barra de búsqueda como vista de título a la barra de navegación. Este ejemplo de código también incluye una solución para el relleno adicional que obtiene al agregarlo como una vista de título.

UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(-5.0, 0.0, 320.0, 44.0)]; 
searchBar.autoresizingMask = UIViewAutoresizingFlexibleWidth; 
UIView *searchBarView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 310.0, 44.0)]; 
searchBarView.autoresizingMask = 0; 
searchBar.delegate = self; 
[searchBarView addSubview:searchBar]; 
self.navigationItem.titleView = searchBarView; 
+0

hice lo mismo pero earler que hice y IBoutlet de serachbar que funcionaba bien pero que se desplazaba por lo que con su código mi función serach no funciona? ¿Cómo resolver eso, creo que necesito omitir delgate de Iboutlet lo que sugieres? Estoy geetin a waring si utilizo este searchBara.delegate = self; rootviewCnt doest not empalamiento UIseachbar delegar protocolo – ram

+0

Tengo el problema de que los resultados se muestran en una vista de tabla incrustada en un popover, en lugar de en el marco de la vista de tabla original. ¿Alguna solución para esto? – Norbert

+0

Esto parece una buena respuesta. ¿Dónde colocaría este código? Si lo copio y lo pego en un método llamado 'addSearchBarToNavigationBar'. ¿Dónde llamaría el método? Estoy usando TableViewController – learner

5

puede asignar cualquier vista a la propiedad titleView del elemento de navegación. Puedes hacerlo de esta manera.

self.navigationItem.titleView = searchBar ; 

Esto debería funcionar o no a continuación, añadir la barra de búsqueda a la instancia UIView y luego asignar a este punto de vista self.navigationItem.titleView va a hacer.

Cuestiones relacionadas