Wie uisearchcontroller zu Tableview hinzufügen

 

Dieses Tutorial ist für X-Code aktualisiert 7.3 & schnell 2.2

Wenn Sie große Menge von Daten in Ihrer Tabelle haben dann finden Produkte können sehr lange dauern. Zum Glück können Sie schnell eine Suche mit UISearchController. Vor diesem gab es UISearchDisplayController. Das ist in X-Code veraltet 6.3. Und jetzt haben Sie UISearchController es zu ersetzen. Ich werde dich lehren, wie dies jetzt verwenden,.

  1. Zunächst lässt sich die x-Code-Projekt wie gewohnt eingestellt. Erstellen Sie neue einheitliche Sicht Anwendung X-Code-Projekt. Stellen Sie Projektnamen zu Suche Demo & speichern Sie sie auf dem Desktop.

neue x-Code-Projekt

 

2. Zum Hauptstoryboard, löschen View-Controller & table-View-Controller

table-View-Controller

 

3. Wählen Sie Tabelle View-Controller & legen Sie es als Ausgangs-View-Controller

Legt das erste View-Controller

 

4. Wählen Sie den Prototyp Zelle & legen Sie seine Kennung, Tablecell

Prototyp Zellenkennung

 

5. Wählen Sie Tabelle View-Controller, Gehe zu Editor -> In einbetten -> Navigation-Controller & setzen Sie den Titel Zahlen

Set Navigations Titel

 

6. Löschen Sie nun View-Controller schnellen Datei & fügen Sie neue Kakao Touch-Klassendatei der Unterklasse UITableViewController

Tabelle View-Controller-swift-Datei hinzufügen

 

7. Zum Hauptstoryboard, Auswahltabelle View-Controller & Set benutzerdefinierte Klasse NumberTableViewController

Set benutzerdefinierte Klasse

 

8. Erstellen Array Tabellendatenwerten zu speichern,. Erstellen Sie ein anderes Array gefilterten Daten zu speichern,. Und erstellen Sie Instanz-Suchsteuereinheit wie folgt

class NumberTableViewController: UITableViewController {
var tableData = ["One", "Two", "Three", "Four", "Five"]

var filteredData:[String] = []

var resultSearchController:UISearchController!

9. Angesichts habe Last folgenden Code hinzufügen

override func viewDidLoad() {
    super.viewDidLoad()
    // 1
    resultSearchController = UISearchController(searchResultsController: nil)
    // 2
    resultSearchController.searchResultsUpdater = self
    // 3
    resultSearchController.hidesNavigationBarDuringPresentation = false
    // 4
    resultSearchController.dimsBackgroundDuringPresentation = false
    // 5
    resultSearchController.searchBar.searchBarStyle = UISearchBarStyle.Prominent
    // 6
    resultSearchController.searchBar.sizeToFit()
    // 7
    self.tableView.tableHeaderView = resultSearchController.searchBar

    // Uncomment the following line to preserve selection between presentations
    // self.clearsSelectionOnViewWillAppear = false

    // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    // self.navigationItem.rightBarButtonItem = self.editButtonItem()
}
  1. In Schließung Ergebnis Such Controller erstellen Instanz des Suchsteuereinheit
  2. Das Suchergebnis wird Shows auf dieselbe Tabelle View-Controller sein. Dadurch erhalten Sie Fehler. Ignorieren es einfach für den Moment & wir werden es bald zu beheben.
  3. Suche Regler Navigationsleiste nicht ersetzen bei der Suche
  4. Hintergrund wird nicht dunkel werden bei der Suche
  5. Suche nach Bar-Stil festgelegt ist Prominente aber Sie können es zu setzen minimal auch
  6. Suchleiste wird in der Größe anpassen.
  7. Suchleiste wird in der Kopfzeile der Tabellenansicht platziert.

10. Stellen mehrere Abschnitte zu 1 & wenn Suche Regler aktiv legen Sie Anzahl der Zeilen pro Abschnitt zu Datenzählung anderes Tabellendaten Zahl filtern

// MARK: - Table view data source

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    // #warning Potentially incomplete method implementation.
    // Return the number of sections.
    return 1
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    // #warning Incomplete method implementation.
    // Return the number of rows in the section.
    if resultSearchController.active {
        return filteredData.count
    }
    else {
        return tableData.count
    }
}

11. Kommentar- Zelle für Zeile an der Indexpfad & ähnlich wie bei früheren Verfahren bei der Suche Regler aktiv Show gefilterten Daten anderweitig nachweisen Tabellendaten

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("tableCell", forIndexPath: indexPath)

    // Configure the cell...
    if resultSearchController.active {
        cell.textLabel?.text = filteredData[indexPath.row]
    }
    else {
        cell.textLabel?.text = tableData[indexPath.row]
    }

    return cell
}

12. In UISearchResultUpdateing Unterklasse wie folgt

class NumberTableViewController: UITableViewController, UISearchResultsUpdating {

13. Fügen Sie folgende Methode & alle Fehler gehen weg. Diese Methode auslöst, wenn Suchleiste ist aktiv und Suchleiste Text geändert

func updateSearchResultsForSearchController(searchController: UISearchController) {
        if searchController.searchBar.text?.characters.count > 0 {
            
            // 1
            filteredData.removeAll(keepCapacity: false)
            // 2
            let searchPredicate = NSPredicate(format: "SELF CONTAINS %@", searchController.searchBar.text!)
            // 3
            let array = (tableData as NSArray).filteredArrayUsingPredicate(searchPredicate)
            // 4
            filteredData = array as! [String]
            // 5
            tableView.reloadData()
            
        }
        else {
            
            filteredData.removeAll(keepCapacity: false)
            
            filteredData = tableData
            
            tableView.reloadData()
            
        }

}
  1. Filter leeres Datenfeld
  2. Predicate setzt Bedingung für Filter.[Kleinbuchstaben c] bedeutet Ergebnisse Fall wäre unempfindlich.
  3. Filter mit dem Table Prädikat
  4. Speicher gefilterte Ergebnis in einem Array
  5. Update Tabellenansicht mit den Suchergebnissen

Jetzt erstellen und auszuführen App in iPhone 5s. Dann starten Sie die Suche.

Suchleiste
Download von X-Code-Datei
Herausforderung 1: In sekundären Suchfilter wie folgt

Suche Controller mit Rahmen
Herunterladen Herausforderung 1 Lösung
Herausforderung 2: Platz Suchleiste in Navigation-Controller statt Tabellenkopf

nav bar Suche
Herunterladen Herausforderung 2 Lösung
Herausforderung 3: Verbergen Suchleiste hinter Navigation-Controller & ziehen Tableview zeigen zum Suchleiste

verstecken sich hinter nav bar
Herunterladen Herausforderung 3 Lösung

Gesamt 11 Stimmen
1

Sagen Sie uns, wie kann ich dieses Tutorial verbessern?

+ = Stellen Sie sicher, Mensch oder Spambot ?