2016-08-16 4 views
0

Ich habe UISearchbar hinzugefügt und wenn ich auf Abbrechen klicke, möchte ich alle Daten in der Tabellenansicht neu laden. Aber es zeigt die durch Suchleiste gefilterte Zelle. Anstatt nur das Suchergebnis anzuzeigen, Wie kann ich alle Daten erneut laden?Wie kann ich alle Daten in der Tabellenansicht erneut laden, wenn ich in der Suchleiste auf Abbrechen klicke? (IOS/Swift)

@IBOutlet weak var mySearchBar: UISearchBar!  
@IBOutlet var myTableView: UITableView! 


var foods = [Food]() 
var foodsSearching = [Food]() 

// search in progress or not 
var isSearching : Bool = false 

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Use the edit button item provided by the table view controller. 
    navigationItem.leftBarButtonItem = editButtonItem() 

    if let savedFoods = loadFoods() { 
     foods += savedFoods 
    } else { 

    } 

    // set table view delegate 
    self.myTableView.dataSource = self 
    self.myTableView.delegate = self 

    // set search bar delegate 
    self.mySearchBar.delegate = self 
} 

....

// hide keyboard when cancel button clicked 
func searchBarCancelButtonClicked(searchBar: UISearchBar) { 
    self.mySearchBar.text = "" 
    self.mySearchBar.resignFirstResponder() 

    self.myTableView.dataSource = self 
    self.myTableView.delegate = self 


    ////////////////////////////////////////////// 
    //need to reload all of data..not only the cells filtered by search bar 
    self.myTableView.reloadData() 


} 
+0

können Sie einige zusätzliche Code anzeigen –

+0

siehe http://shrikar.com/swift-ios-tutorial-uisearchbar-and-uisearchbardelegate/ –

+0

Versuchen Sie, den Code der 'tableviewdelegate' Methoden hinzuzufügen. –

Antwort

2

Set isSearching zu false auf searchBarCancelButtonClicked bevor die Tabellenansicht neu zu laden. Überprüfen Sie, ob isSearching auf trueview delegies foods Array ist, andernfalls verwenden Sie foodsSearching Array.

+0

hey ..... Es funktioniert gut. Vielen Dank!!!!! – JessJ

Verwandte Themen