我试图在另一个中调用一个swift文件的功能。我是通过在函数前面添加类来实现的。但是,当我将func更改为func类时,在tableView.reloadData()上收到错误,之前没有错误。错误是“对tableView(_:numberOfRowsInSection)的引用过多。我想删除tableView错误,因为我也希望在另一个swift文件中调用该函数。这是我一直在尝试的代码:
class func filteredContentForSearchText(searchText:String, scope: String = "All"){
var filtered: [String] = []
let UniName: [String] = ["ATLANTA MEMORIAL HOSPITAL", "AUSTIN SURGICAL HOSPITAL", "BAPTIST MEDICAL CENTER", "BOWIE MEMORIAL HOSPITAL",
"COLLEGE STATION MEDICAL CENTER", "COVENANT MEDICAL CENTER","HUNT REGIONAL COMMUNITY HOSPITAL","METHODIST HOSPITAL","PARKVIEW HOSPITAL"]
filtered = UniName.filter{car in
print(filtered)
return car.lowercaseString.containsString(searchText.lowercaseString)
}
tableView.reloadData() }
如何重新加载tableView,以便同时可以在另一个swift文件中使用此功能的同时获取 map 套件的新搜索结果。
最佳答案
您可能希望使它成为委托方法,而不是类函数。
用协议定义委托:
protocol HospitalSearchDelegate {
func filteredContentForSearchText(searchText: String, scope: String)
}
然后在需要调用它的swift文件中创建一个属性:
var delegate: HospitalSearchDelegate?
分配属性,然后将其称为:
delegate?.filteredContentForSearchText("Search", scope: "All")