首页 > 解决方案 > 文本搜索防止在 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()
        }
    }

标签: iosswiftuitableviewuitextview

解决方案


您必须分配一个布尔变量,比如说isSearched,并在进行搜索时使其为真。

然后在你的函数getRestData中,检查 isSearched 是否为真,如果它只是从函数返回,否则加载数据isSearched为假


推荐阅读