当我点击搜索栏上的取消时,如何在tableview中重新加载所有数据?(IOS / Swift)

时间:2016-08-16 05:15:20

标签: ios swift tableview

我添加了UISearchbar,当我点击取消按钮时,我想重新加载tableview上的所有数据。但它显示了按搜索栏过滤的单元格。而不是仅显示搜索结果,如何重新加载所有数据?

@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()


}

1 个答案:

答案 0 :(得分:2)

在重新加载表格视图之前,在isSearching上将false设置为searchBarCancelButtonClicked。在tableview委托上,检查isSearching是否为true,然后使用foods数组,否则使用foodsSearching数组。