2016-11-20 5 views
-1

Ich habe eine einfache Anordnung von names in einem tableView sortieren, und ich möchte die tableView von A-Z sortieren, wenn ich einen dedizierten button drücken wird.Wie Tableview von A-Z swift 2.3

TableViewController.Swift:

import UIKit 

class BarsViewController: UITableViewController,UISearchResultsUpdating,UISearchBarDelegate,UISearchDisplayDelegate{ 

@IBOutlet var tableViewController: UITableView! 

// MARK : Data 

var names = ["Shalvata", 
      "Markid", 
      "Litzman Bar", 
      "The Cat & The Dog", 
      "Light house"] 

Und es sieht wie folgt aus:

Image

ich ein button, die einst die names Array im tableView sortiert werden gedrückt implementieren möchten von AZ & wenn ich noch einmal drücke, wird es zur Standardreihenfolge zurückkehren.

Danke

+1

Sie können Ihre Datenquelle, das Array sortieren und die Tabelle neu laden. –

Antwort

1

Sie müssen zuerst eine Klassenvariable erstellen, wenn, um anzuzeigen, noch sortiert oder nicht. dann sortierte Array erstellen

// this is class variable 
var isSorted = false 
let names = ["Shalvata", 
     "Markid", 
     "Litzman Bar", 
     "The Cat & The Dog", 
     "Light house"] 

var sortedNames = [String]() 

override func viewDidLoad() { 
    super.viewDidLoad() 

    sortedNames = names.sort() 

    // your other lines of codes 

} 

dann in Funktion, wenn Schaltfläche geklickt wird, wie dieses Update diese sorted Variable zurückzukehren Art in Tableview cellForRow Methode

if isSorted { 
    // use the sortedNames here 
} 
else { 
    // use normal names array 
} 

Ihre Taste Aktion Funktion sein wird.

func onClickButton() { 
    isSorted = !isSorted // change value of isSorted either to false or true depends on last updated value 
    tableView.reloadData() 
} 
+0

Ich bekomme diesen Fehler: 'Instanz Member 'Namen' kann nicht auf den Typ TableViewController'' –

+0

@NewbieQuestions Ich aktualisierte die Klassenvariable. Dies sollte diesen Fehler beheben. Sortierung sollte in viewdidload getan werden – xmhafiz

+0

Jetzt bekomme ich diesen Fehler: 'Fehlendes Argument für Parameter # 1 in Call' –