Pregunta

Tengo una UITabBar controlador de la gestión de varios controladores (utilizando SDK 3.0).Uno de estos es un formato tableview controlador y la necesito para proporcionar una capacidad de búsqueda utilizando el UISearchDisplayController.Todos los de mi código está basado en la Manzana TableSearch ejemplo.Sin embargo, al hacer clic en la ficha, el formato tableview controlador aparece mostrando su contenido relacionado, pero no hay barra de búsquedas aparece.He comprobado el xib en IB para asegurarse de que todos los enchufes están configurados correctamente, pero no importa lo que yo trato de auto.searchDisplayController es siempre nula y la barra de búsqueda no aparece.

En la práctica he replicado MainView.xib de la TableSearch el ejemplo y el propietario de los archivos de la clase para la correcta clase de controlador de la ficha.Las salidas son conjuntos, como en el ejemplo MainView.xib.Me estoy perdiendo cualquier paso importante o haciendo algo mal?

Gracias de antemano.

¿Fue útil?

Solución 3

Ok, he encontrado la forma de resolverlo. En mi caso, el problema era debido al hecho de que estaba usando un controlador embebido dentro de la UITabBarController como una de sus pestañas administrados (es decir, como un niño).

Extracción del controlador de la UITabBarController, a continuación, añadir una UINavigationController a la UITabBarController lugar, y finalmente poner mi controlador como un hijo de la UINavigationController resuelto completamente el problema.

No entiendo por qué esto es así (no hay información relacionada en la documentación, como sucede a menudo); Sin embargo, ahora funciona como un encanto. Con un cordial saludo.

Otros consejos

Yo tenía el mismo problema y pasó a tropezar con esta solución ...

Si usted tiene su controlador de vista de la tabla (por ejemplo. UISearchDisplayController) anidado en un controlador de la barra de pestañas de navegación o usando el Interface Builder, es necesario establecer el "Nombre de plumilla" en la ventana "Atributos inspector".

El nombre Nib será la que ejerce en la vista de tabla y tiene el controlador (por ejemplo. UISearchDisplayController) como el propietario del archivo.

Yo también tengo este problema :( ¿Es la barra de búsqueda conseguir escondido detrás de la tableview?

@unforgiven, ¿has probado esto ...?

searchBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0, 0, 320, 40)]; 
[self.tableView setTableHeaderView: searchBar];

Esto crea manualmente una barra de búsqueda y funciona. Pero estoy haciendo algún error estúpido en la barra de búsqueda del IB que no se presenta a pesar de que mi conexión es perfecta. : - (

No actualizar este post si se obtiene la respuesta ...

Yo tenía un problema similar

Para resolver que tenía que hacer un paso adicional a la respuesta unforgivens En mi semilla principal

1) crear un UITabController 2) Entonces me arrastré a cabo un controlador de UINavigational en el controlador pestaña 3) A continuación, arrastrado fuera un UITableViewController en el NavigationalController como un niño 4) Luego cambiado (3) la clase que sea mi MyTableWithSearchBarViewController en el inspector - comprobar si el nombre de la semilla es correcta y cambiar en caso necesario por el inspector, así 5) I a continuación, tenía que eliminar el tableView que se crea automáticamente por IB en la etapa (3). Sólo entonces el espectáculo barra de búsqueda correctamente ...

Si en el paso 3 yo sacamos un controlador diferente al escenario oa la izquierda del tableView no sería solamente siempre mostrar la tabla y no la barra de búsqueda

raro

Tomtrapeze tiene el derecho de respuesta si el archivo nib que contiene el UITableViewController.Pero, si va a cargar la UITableViewController en el código, tal como lo empuja a la pila de un UINavigationController -- la solución es un poco diferente.

Cuando se inicializa el UITableViewController o subclase, es necesario utilizar la initWithNibName:paquete:forma de inicializador y especifique el nombre del archivo nib.Alternativamente, puede utilizar el estándar de -initWithStyle:inicializador y establecer manualmente la nibName propiedad antes de que se carga la vista.

Si el nibName propiedad no se establece cuando la vista se carga, UITableViewController no uso el normal UIViewController punta de búsqueda de la lógica.Se acaba de cargar un estándar UITableView lugar.

Hace poco supe que podía cargar archivos NIB con [[MyViewController alloc] initWithNibName:nil bundle:nil]; cuando el archivo SEMILLA tiene el mismo nombre que la clase (es decir MyViewController.xib). Resulta que la inicialización de esta manera hace que el 'UISearchBarandUISearchBarDisplayController` para no mostrar. Cuando inicializa el controlador de vista de realidad a escribir el nombre de la clase, mi barra de búsqueda se presentó correctamente. Al principio me pareció que tenía algo que ver con la forma en que estaba presentando el controlador de vista, pero estaba contento de que no lo era.

PGWSearchViewController *searchVC = [[PGWSearchViewController alloc] initWithNibName:@"PGWSearchViewController" bundle:nil];

searchVC.modalPresentationStyle = UIModalPresentationFullScreen;
searchVC.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

[self presentViewController:searchVC animated:YES completion:^{ }];

Esto es usando iOS SDK 5.1 y XCode 4.3.1.

Otra posible solución que funciona para mí es inicializar el UITableViewController con initWithNibName: haz:

SearchEntryTableViewController* searchEntryTableViewController = [[SearchEntryTableViewController alloc]initWithNibName:@"SearchEntryTableViewController" bundle:nil];

Para anidar la UITableViewController en un UINavigationController antes de que se ponga en un UITabBarController no soluciona el problema para mí ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top