2017-10-01 2 views
1

Ich habe versucht, Navigation Large Title und Hinzufügen von Suchleiste zu Navigation Controller. Die Suchleiste wird unter dem Navigationstitel angezeigt. Es sollte versteckt werden, bis ich nach unten wische. Ich verstehe, dass das Standardverhalten ausgeblendet ist, wenn ich "navigationItem.hidesSearchBarWhenScrolling = false" nicht festlege. Selbst wenn ich "navigationItem.hidesSearchBarWhenScrolling = true" hinzufüge, funktioniert es nicht.SearchBar in NavigationBar IOS 11

Ich habe eine neue App erstellt, um diese Funktion zu testen. Es hat ViewController und Navigation Controller eingebettet. Unten ist mein Code:

class ViewController: UIViewController { 

    let searchController = UISearchController(searchResultsController: nil) 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     navigationController?.navigationBar.prefersLargeTitles = true 
     navigationItem.searchController = searchController 
     // navigationItem.hidesSearchBarWhenScrolling = true 

    } 
} 
+0

Sorry, und was ist das Problem? – Sander

+0

Die Suchleiste sollte ausgeblendet sein. Es zeigt nur die Suchleiste an, wenn ich wische. – GFONG

+0

Das Problem ist Toolbar über TableView im Storyboard. Wenn Sie die Symbolleiste unter TableView verschieben, funktionieren der große Titel und die ausgeblendete Suchleiste wie erwartet. – GFONG

Antwort

0

Ich habe mit einer ähnlichen Situation begegnet. Ich habe wie folgt gelöst:

1- Entfernen Sie alles über searchController

2- hinzufügen UISearchBar Kontrolle in Ihre Tabelle

enter image description here

3- Verbinden Sie diese SearchBar Steuerung an eine IBOutlet Variable und setzen delegieren

searchBar.delegate = self 

4- nur UISearchBarDelegate (entfernen UISearchResultsUpdating) und implementieren textDidChange Methode

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) { 
    filter... 
    reload table... 
} 

dieser Tabellenkopf Suchleiste funktioniert mit iOS 11 und älteren Versionen

Verwandte Themen