Ich muss Arrays, die die Werte von searchController auffüllt.Wie können Sie zwei Werte aus einem anderen Array als Ergebnis von searchController laden?
let textLabel = ["Uni", "Uni", "Faber-Castell", "Faber-Castell","Faber-Castell", "Pilot", "Pilot"]
let detailTextLabel = ["Pen", "Pencil", "Crayon", "Mechanical Pencil", "Contour Pencil", "Eraser", "Sharpener"]
Diese beiden Arrays Paar, während die Daten von UITableViewController.
Wie (Uni, Pen) Nachladen (Uni, Bleistift), (Faber-Castell, Kreide), ...
In Paaren erste ist der Zelltitel, der zweite ist der Untertitel. Ich folgte iOSCreator's tutorial.
Mein Problem ist, wenn ich Text suche es nur Titel Abschnitt aktualisiert, nicht der Untertitel, wie es erwartet wurde.
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! UITableViewCell
// 3
if (self.resultSearchController.active) {
// it only updates textLabel. But when I add detailTextLabel
// subtitles comes wrong because first array contains one element
// more than twice.
cell.textLabel?.text = filteredTableData[indexPath.row]
return cell
} else {
cell.textLabel?.text = tableData[indexPath.row]
return cell
}
}
func updateSearchResultsForSearchController(searchController: UISearchController) {
filteredTableData.removeAll(keepCapacity: false)
let searchPredicate = NSPredicate(format: "SELF CONTAINS[c] %@", searchController.searchBar.text)
let array = (tableData as NSArray).filteredArrayUsingPredicate(searchPredicate)
filteredTableData = array as! [String]
self.tableView.reloadData()
}
prüfen Apples UISearchController Quellcode. –