Agregar UISearchBar a UICollectionviewController embedded en NavigationController IOS6

Me gustaría agregar una barra de búsqueda a un UICollectionViewController, que se incrusta de la siguiente manera: UItabbarController> UINavigationbarController> UICollectionViewController> SearchBar (!) En esta vista, la barra de búsqueda replaceía a la NavigationBar.

Bajo el mismo layout, si pruebo lo anterior con un UITableViewController, la barra de búsqueda aparece bien (tanto mediante progtwigción como a través del Storyboard)

El problema es que no puedo agregar la barra de búsqueda a través del UICollectionViewController cuando utilizo el marco StoryBoard; Simplemente se encuentra en medio de la vista, y no tengo ni idea de cómo moverlo a la parte superior. Además, siempre aparece debajo de UICollectionview, por lo que no es visible.

Entonces, tomando la otra ruta, mediante progtwigción:

-(void)viewWillAppear:(BOOL)animated{ self.searchBarTop = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)]; [self.searchBarTop setPlaceholder:@"Enter your command here"]; self.searchDC = [[UISearchDisplayController alloc]initWithSearchBar:self.searchBarTop contentsController:self]; self.searchBarTop.delegate = self; [[self navigationController] setNavigationBarHidden:NO animated:animated]; [self.navigationController.navigationBar addSubview:self.searchBarTop]; } 

Con esto, la barra de búsqueda aparece bien. Pero, desafortunadamente, cuando escribo algún text, desaparece por encima de la vista, presumiblemente porque el navBar subyacente lo hace, (no sé por qué …)

No estoy seguro de exactamente por qué la barra de búsqueda está bien con un UITableViewController, y por qué es tan doloroso para un UICollectionViewController. Dicho esto, cualquier persona tiene una idea de por qué la barra de búsqueda / navBar desaparece, y cómo puedo solucionar eso?

Cualquier solución es bienvenida …

Gracias ! -UN

Agregue un encabezado y ponga el SearchBar en eso (eso es lo que he hecho en el pasado). Dicho esto, tengo el hábito de casi nunca usar un UITableViewController (a less que esté implementando un StaticCell TableView ) o un UICollectionViewController . Lo que sugeriría es implementar un UIViewController estándar y simplemente añadir en su UICollectionView . Tamaño de la CollectionView SearchBar abajo y poner el SearchBar en la parte superior. Esto le permite tener una SearchBar que siempre se muestra (que a mis usuarios en general les gusta más que tener que desplazarse a la parte superior para cambiar, editar una búsqueda)

Utilizo el siguiente código para agregar UISearchBar a UICollectionViewController. Lamentablemente, no pude hacer funcionar UISearchDisplayController.

 - (void)viewDidLoad { [super viewDidLoad]; self.searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.collectionView.frame), 44)]; self.searchBar.autocorrectionType = UITextAutocorrectionTypeNo; self.searchBar.delegate = self; [self.collectionView addSubview:self.searchBar]; [self.collectionView setContentOffset:CGPointMake(0, 44)]; } - (void) viewWillAppear:(BOOL)animated{ // to show search bar [self.collectionView setContentOffset:CGPointMake(0, 0)]; // to hide search bar [self.collectionView setContentOffset:CGPointMake(0, 44)]; } -(void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar { [searchBar setShowsCancelButton:YES animated:YES]; } -(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar { [searchBar setText:@""]; [searchBar setShowsCancelButton:NO animated:YES]; [searchBar resignFirstResponder]; }