gpt4 book ai didi

ios - 为什么使用 UISearchResultsUpdating 取消按钮后我的表格 View 为空白?

转载 作者:行者123 更新时间:2023-11-30 14:18:29 29 4
gpt4 key购买 nike

我有一个 TableView ,它加载函数并在 viewDidAppear 中显示数据。当用户点击导航标题中的搜索栏并搜索查询时,会使用相同的表格 View (我假设)。

问题是用户点击取消按钮后:调用原始数据的函数执行并打印了正确的数据,但在tableView.reloadData之后没有出现在屏幕上。

我尝试将该函数放置在不同的位置(didCancel、didEndEditing),并且该函数被调用/正确返回数据,但没有出现在表格上。

有什么建议或解决方法吗?

class LocationViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UISearchResultsUpdating, UISearchBarDelegate, UISearchControllerDelegate {

override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
}

override func viewWillAppear(animated: Bool) {
self.load0()
tableView.reloadData()

self.locationSearchController = ({
let controller = UISearchController(searchResultsController: nil)
controller.searchResultsUpdater = self
controller.hidesNavigationBarDuringPresentation = false
controller.dimsBackgroundDuringPresentation = false
controller.searchBar.delegate = self
controller.searchBar.searchBarStyle = .Minimal
controller.searchBar.sizeToFit()
self.navigationItem.titleView = controller.searchBar
return controller
})()
}

//below I try to remove the search data and reload the original data.
override func viewDidDisappear(animated: Bool) {
self.locationSearchController.active = false
}

func searchBarTextDidBeginEditing(searchBar: UISearchBar) {
self.searchData.removeAllObjects()
self.category.removeAll(keepCapacity: false)
self.product.removeAll(keepCapacity: false)
self.users.removeAll(keepCapacity: false)
self.load0()
tableView.reloadData()
}


func searchBarTextDidEndEditing(searchBar: UISearchBar) {
self.searchData.removeAllObjects()
self.category.removeAll(keepCapacity: false)
self.product.removeAll(keepCapacity: false)
self.users.removeAll(keepCapacity: false)
self.load0()
tableView.reloadData()

}

func searchBarCancelButtonClicked(searchBar: UISearchBar) {
self.searchData.removeAllObjects()
self.category.removeAll(keepCapacity: false)
self.product.removeAll(keepCapacity: false)
self.users.removeAll(keepCapacity: false)
self.load0()
tableView.reloadData() }

执行搜索的函数是updateSearchResultsForSearchController:

func updateSearchResultsForSearchController(searchController: UISearchController) { query and places items in an array that's displayed by the original tableView }

我想知道是否使用了我不知道的 tableView,但很明显 searchController 正在使用原始 tableView,因为它遵循我的可重用单元格的设计。

最佳答案

您必须这样填充 UITableView:

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if self.searchDisplayController!.active {
return self.filteredData.count
}
return self.defaultdData.count
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = self.tableView.dequeueReusableCellWithIdentifier("Cell") as! UITableViewCell

if self.searchDisplayController!.active {
cell.textLabel.text = self.filteredData[indexPath.row]
} else {
cell.textLabel.text = self.defaultData[indexPath.row]
}

return cell
}

关于ios - 为什么使用 UISearchResultsUpdating 取消按钮后我的表格 View 为空白?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30825961/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com