2015-03-25 12 views
12

ich UISearchController verwende und die UISearchBar hat auch einen Umfang bar. Die Suchleiste ist als subview zu einer UIView zugesetzt, die oberhalb des UItableView ist. Ich habe es so gemacht, weil ich möchte, dass die Suchleiste immer sichtbar ist, auch wenn die Tabellenansicht gescrollt wird.UISearchController der Suchleiste überlappt ersten Tableview Zelle

Das Problem ist die scopebar die erste Tableview Zelle

Storyboard

enter image description here

Scope bar Überlappung der Tableview Zelle

enter image description here

überlappt Wie kann ich diese Überlappung verhindern? , Ich kann den Suchbalken in der Navigationsleiste seit dem nicht anzeigen Die Scope-Leiste, wenn sie in der Navigationsleiste platziert wird, wird nicht angezeigt.

+0

Sie versuchen Einstellung könnte 'tableView.contentInset = UIEdgeInsetsMake (64, 0, 0, 0)' die unten Tableview Inhalt 64 Punkte drücken wird ... Sie, dass zu dem, was setzen soll immer die Größe des scopebar ist ... – chuthan20

+0

@ chuthan20 Wo genau soll ich versuchen, diese Einstellung gibt es eine Methode, die ausgelöst wird, wenn UISearchController aktiv wird? –

+0

Sie könnten Ihren View-Controller als Delegierten von UISearchController festlegen: https://developer.apple.com/library/ios/documentation/ UIKit/Reference/UISearchControllerDelegate_Ref/index.html – chuthan20

Antwort

0

Fügen Sie die Suchleiste und Tabellenansicht auf dem UIViewController, wie unten in der Abbildung dargestellt. Überschneiden Sie die Suchleiste nicht mit der Tabellenansicht. Ich benutze dies in meiner App und es funktioniert gut für mich.

enter image description here

+0

ich war in der Lage, um es durch die Verwendung 'UIEdgeInsetsMake' zu ​​arbeiten, wie in den Kommentaren vorgeschlagen. Ich habe genau so eingerichtet, wie Sie es in Ihrem Bild getan haben, aber das funktioniert nicht –

+0

Ich habe den Einsatz im Code nicht festgelegt. – Karlos

5

Das ist für mich gearbeitet:

die Suche Display-Controller und SearchBar im Tableview-Header zu haben. Fügen Sie die heightForHeaderInSection in Ihrem TableViewController hinzu.

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

In Ihrem Fall müssen Sie auch die Höhe der Oszilloskopleiste hinzufügen. Jetzt wird immer eine Basishöhe beibehalten.

+0

sollte als Antwort –

2

Das ist für mich gearbeitet:

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

Works für mich markiert werden! Wenn der Such-Controller nicht aktiv ist, habe ich für die Tabelle mit den Abschnitten "20 zurückgeben // kein Bereich" geändert. Weil, wenn 0 ist, verbirgt dies die Sektionen Header. – Panayot

Verwandte Themen