2015-03-25 12 views
12

Sto usando UISearchController e lo UISearchBar ha anche una barra di campo. La barra di ricerca viene aggiunta come sottoview a UIView che si trova sopra lo UItableView. L'ho fatto in questo modo poiché voglio che la barra di ricerca sia sempre visibile anche quando si scorre la vista tabella.La barra di ricerca di UISearchController si sovrappone alla prima cella Tableview

Il problema è lo scopebar si sovrappone alla prima cella Tableview

StoryBoard

enter image description here

bar Scope sovrapposti della cellula Tableview

enter image description here

Come posso evitare che questa sovrapposizione? , Non posso visualizzare la barra di ricerca nella barra di navigazione da th La barra di campo quando viene posizionata nella barra di navigazione non viene visualizzata.

+0

si potrebbe provare a impostare 'tableView.contentInset = UIEdgeInsetsMake (64, 0, 0, 0)' che spingerà il contenuto del tableView 64 punti verso il basso ... si dovrebbe impostare che a ciò la dimensione della barra di estensione è ... – chuthan20

+0

@ chuthan20 Dove esattamente dovrei provare a impostarlo, c'è un metodo che viene attivato quando UISearchController diventa attivo? –

+0

È possibile impostare il controller di visualizzazione come delegato di UISearchController, 'https: // developer.apple.com/library/ios/documentation/UIKit/Reference/UISearchControllerDelegate_Ref/index.html' – chuthan20

risposta

0

Aggiungere la barra di ricerca e la vista tabella su UIViewController come mostrato nell'immagine seguente. Non sovrapporre la barra di ricerca con la vista tabella. Sto usando questo nella mia app e funziona bene per me.

enter image description here

+0

Sono riuscito a farlo funzionare usando 'UIEdgeInsetsMake' come suggerito nei commenti. Ho impostato esattamente come hai fatto nella tua immagine, ma ciò non funziona –

+0

Non ho impostato l'inserto nel codice. – Karlos

5

questo ha funzionato per me:

Avere il controllo di ricerca Display e SearchBar nell'intestazione Tableview. Aggiungi lo heightForHeaderInSection nel tuo TableViewController.

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { 
    return 44; //I used the 44, the height of SearchBar 
} 

Nel tuo caso dovrai aggiungere anche l'altezza della barra di estensione. Ora manterrà sempre un'altezza di base.

+0

dovrebbe essere contrassegnato come risposta –

2

questo ha funzionato per me:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { 
    if (self.searchController.active) { 
     return 44; // with scope 
    } else { 
     return 0; // no scope 
    } 
} 
+0

Funziona per me! Per la tabella con sezioni, quando il controller di ricerca non è attivo, sono passato a "return 20; // no scope". Perché quando è 0, questo nasconde le intestazioni delle sezioni. – Panayot

Problemi correlati