iOS8 UISearchController cubre el UITableView

He implementado un 1UISearchController1 para mi tableview, con ámbitos y todo. Sin embargo, no se muestra correctamente cuando la vista se carga inicialmente.

Hay cuatro cosas diferentes que veo dependiendo de mis acciones.

Esto es lo que veo cuando aparece la vista por primera vez. No espero que aparezca la barra de scope:

Ahora, si hago clic en la barra de búsqueda, veo esto:

Luego, si presiono nuevamente el button Cancelar, veo esto en la vista de la tabla:

Finalmente, si presiono nuevamente la barra de búsqueda, veo lo que espero cuando hice tapping en la barra de búsqueda la primera vez:

Y si cancelo una vez más, ahora la barra de búsqueda se muestra correctamente en la vista de la tabla:

Aquí está la parte relevante de mi TableViewController.

class BaseWineTableViewController: UITableViewController, UITableViewDelegate, UINavigationControllerDelegate, UITableViewDataSource, UISearchResultsUpdating, UISearchBarDelegate, UISearchControllerDelegate { var resultSearchController = UISearchController() func ConfigureSearchController() { self.resultSearchController = UISearchController(searchResultsController: nil) self.resultSearchController.searchResultsUpdater = self self.resultSearchController.searchBar.delegate = self self.resultSearchController.delegate = self self.resultSearchController.searchBar.showsCancelButton = true self.resultSearchController.searchBar.autocapitalizationType = .None self.resultSearchController.searchBar.showsScopeBar = true self.resultSearchController.searchBar.scopeButtonTitles = ["All", CELLAR_STATUSES.Cellanetworking, CELLAR_STATUSES.Wishlist, CELLAR_STATUSES.Finished] self.resultSearchController.definesPresentationContext = true self.resultSearchController.dimsBackgroundDuringPresentation = false self.tableView.tableHeaderView = resultSearchController.searchBar } override func viewDidLoad() { super.viewDidLoad() ConfigureSearchController() } 

Me lo imaginé. Cuando eliminé esta línea:

 self.resultSearchController.searchBar.showsScopeBar = true 

Pero a la izquierda en la línea que define los títulos de scope, lo arregló.

Tuve el mismo problema y parecía ocurrir solo en iOS8. En iOS9, la barra de búsqueda no cubría la vista de tabla.

No utilizo la barra de scope, por lo que la corrección propuesta no fue aplicable para mí.

Al agregar la línea

 [self.searchController.searchBar sizeToFit]; 

antes de asignar el searchBar a la vista de tabla, funcionó bien en iOS8 y iOS9 para mí.

 -(void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil]; self.searchController.searchResultsUpdater = self; self.searchController.dimsBackgroundDuringPresentation = NO; self.searchController.searchBar.delegate = self; self.definesPresentationContext = YES; [self.searchController.searchBar sizeToFit]; self.tableView.tableHeaderView = self.searchController.searchBar; }