2016-02-09 21 views
7

Ho inserito la searchBar nella tabellaHeaderView. Tutto funziona bene su iphone 6 ma su iphone 5s ottengo questo risultato strano?searchBar sovrapposto alla vista dell'intestazione della sezione

override func viewDidLoad() { 
    super.viewDidLoad() 
    tableView.delegate = self 
    tableView.dataSource = self 
    tableView.sectionIndexColor = Constants.Colors.ThemeGreen 
    tableView.sectionIndexBackgroundColor = UIColor.clearColor() 
    tableView.sectionIndexTrackingBackgroundColor = UIColor.clearColor() 
    tableView.contentInset = UIEdgeInsetsMake(0, 0, CGFloat(Constants.Dimensions.TabBarHeight), 0) 
    resultSearchController = UISearchController(searchResultsController: nil) 
    resultSearchController.searchResultsUpdater = self 
    resultSearchController.dimsBackgroundDuringPresentation = false 
    resultSearchController.definesPresentationContext = true 
    tableView.tableHeaderView = resultSearchController.searchBar 
    resultSearchController.searchBar.sizeToFit() 

//Fetch data for the first time 
    do{ 
     try fetchedResultsController.performFetch() 
     listHeaderView?.count = "\(fetchedResultsController.fetchedObjects!.count)" 
    }catch{ 
     print("Error - Couldn't fetch list") 
    } 
  • NOTA: sto usando un NSFetchedResultController per recuperare i dati

enter image description here

+0

Sto ancora affrontando questo problema –

risposta

3

Ecco la soluzione. Non chiamare sizeToFit() DOPO mettere la searchBar in tableHeaderView ma chiamarla PRIMA. Che diavolo sta succedendo dietro le quinte ... mi chiedo ..

resultSearchController.searchBar.sizeToFit() //Important to call sizeToFit BEFORE adding it to tableHeaderView or you get layout issues 
tableView.tableHeaderView = resultSearchController.searchBar 
+0

anche dopo aver chiamato sizeToFit prima di aggiungere, sto affrontando questo problema ... –

0

sembra solo sotto la linea di codice non lavoro ... niente altro sembra funzionare in questo momento.

self.tableView.beginUpdates() 
     // self.tableView.setTableHeaderView(headerView: self.filterView!) 
     //self.tableView.reloadData() 
     self.tableView.layoutIfNeeded() 
     self.tableView.layoutSubviews() 
     self.tableView.endUpdates() 

ogni vostra tabella ridimensionare o cambiare i vincoli che è necessario chiamare sopra il codice.

0

Prova questa può funzionare

resultSearchController.clipToBounds = true

Si può anche provare lo stesso

searchControl.searchBar.clipToBounds = true 

penso che funziona per il vostro codice.