2015-03-25 15 views
12

Używam UISearchController, a UISearchBar ma także pasek zakresu. Pasek wyszukiwania jest dodawany jako podzbiór do UIView, który znajduje się powyżej UItableView. Zrobiłem to w ten sposób, ponieważ chcę, aby pasek wyszukiwania był zawsze widoczny, nawet gdy przewijany jest widok tabeli.Pasek wyszukiwania UISearchController nakłada się na pierwszą komórkę widoku tabeli

Problemem jest scopebar nakłada się na pierwszą komórkę Tableview

Storyboard

enter image description here

Zakres poprzeczkę nakładających komórkę Tableview

enter image description here

Jak mogę zapobiec nakładaniu? , Nie mogę wyświetlić paska wyszukiwania na pasku nawigacyjnym od th e scopebar po umieszczeniu na pasku nawigacji nie zostanie wyświetlony.

+0

można spróbować ustawić 'tableView.contentInset = UIEdgeInsetsMake (64, 0, 0, 0)', która popchnie zawartości Tableview za 64 punktów w dół ... należy ustawić, że na co kiedykolwiek rozmiar scopebar jest ... – chuthan20

+0

@ chuthan20 Gdzie dokładnie powinienem spróbować ustawić to, czy istnieje metoda, która jest wyzwalana, gdy UISearchController staje się aktywny? –

+0

Można ustawić kontroler widoku jako delegata UISearchController, 'https: // developer.apple.com/library/ios/documentation/UIKit/Reference/UISearchControllerDelegate_Ref/index.html' – chuthan20

Odpowiedz

0

Dodaj pasek wyszukiwania i widok tabeli na UIViewController, jak pokazano na obrazku poniżej. Nie nakładaj paska wyszukiwania na widok tabeli. Używam tego w mojej aplikacji i działa mi dobrze.

enter image description here

+0

Udało mi się uruchomić go za pomocą 'UIEdgeInsetsMake' zgodnie z sugestiami w komentarzach. Mam układ dokładnie taki, jaki zrobiłeś na swoim obrazie, ale to nie działa –

+0

Nie ustawiłem wstawki w kodzie. – Karlos

5

Ten pracował dla mnie:

Mając sterownik wyświetlacza i SearchBar Szukaj w nagłówku Tableview. Dodaj heightForHeaderInSection w swoim TableViewController.

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

W twoim przypadku musisz również dodać wysokość paska zakresu. Teraz zawsze zachowa wysokość podstawy.

+0

powinien być oznaczony jako odpowiedź –

2

Ten pracował dla mnie:

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

Działa dla mnie! Dla tabeli z sekcjami, gdy kontroler wyszukiwania nie jest aktywny, zmieniłem na "return 20; // no scope". Ponieważ gdy wynosi 0, ukrywa nagłówki sekcji. – Panayot