ios - 文本搜索防止在 Swift 中重新加载 tableview 中的所有数据
问题描述
有一个 uitextview 和 uitableview,这个 tableview 获取所有数据。如果我在 uitextview 中搜索文本,它会获取结果(无论我在 uitextview 上键入什么),但问题是在获得搜索结果之后我向下滚动一点,然后表重新加载/再次获取搜索结果下的所有数据。如果我在文本搜索后向下滚动,如何防止重新加载数据?
@IBOutlet weak var txtSearch: UITextField!
@IBOutlet weak var tblAllRest: UITableView!
@IBOutlet weak var ScrollViewMain: UIScrollView!
var arrayAllRest : [HomeRestaurantModel] = []
var page = 1
self.tblAllRest.delegate = self
self.tblAllRest.dataSource = self
self.txtSearch.addTarget(self, action: #selector(self.txtChanged(_:)), for: .editingChanged)
@objc func txtChanged(_ sender : UITextField){
self.page = 1
self.getRestData()
}
func getRestData(){ // api call
GFunctions.shared.APICallRestaurantSearchList(tbl : self.tblAllRest ,page: self.page.description, is_featured: "All", search: self.txtSearch.text!) { (complete, arrayRest) in
if complete{
if self.page == 1{
self.arrayAllRest = arrayRest
}else{
self.arrayAllRest += arrayRest
}
}else{
if self.page == 1{
self.arrayAllRest = []
}
}
self.page += 1
self.tblAllRest.reloadData()
}
}
解决方案
您必须分配一个布尔变量,比如说isSearched
,并在进行搜索时使其为真。
然后在你的函数getRestData
中,检查 isSearched 是否为真,如果它只是从函数返回,否则加载数据isSearched
为假
推荐阅读
- java - LGoodDatePicker 与 getDate() 的问题
- flutter - 错误:“未来”类型的值
'不能分配给'Widget'类型的变量颤动 - postgresql - AWS Glue 爬虫在 Postgres 上看不到具体化视图
- python - 值不在熊猫的范围内
- sql - sql 根据不同的组创建两个表的不同不匹配的结果集,如图所示
- html - Django Crispy Forms 布局在 forms.Modelform 内部不起作用
- angular - 如何在 l18n 中以角度显示基于所选语言的不同元素
- python - 小批量和 RMSprop 从头开始的问题
- php - 我可以创建一个执行 guzzle 请求的中间件吗?
- node.js - 如何解决 Node.js Puppeteer Web Scraper 中的超时错误