我有一个Master-Detail应用程序,其中Master有一个UITable视图,带有一个搜索栏,点击后进入详细信息视图,该视图具有单击的主视图的Web视图。
在使用搜索之前,一切都很顺利。例如,我输入搜索栏"我们"为"威斯敏斯特储蓄信用社"。搜索显示在第一行显示,初始加载时属于" Annie"这是在第一行。
我有过滤数据[indexPath.row],它显示了"威斯敏斯特储蓄信用社"它与UIImage相关联,因此图像正确显示了#34; Westminster Savings Credit Union"但是,urlString仍显示" Annie"的网站。我不确定如何获得#34; Westminster Savings Credit Union"的相应网站。
我已经发布了didSelectRowAt和SearchBar的代码。感谢。
public func tableView(_ tableView: UITableView, didSelectRowAt indexPath:IndexPath) {
var object2: AnyObject?
if let cell = tableView.cellForRow(at: indexPath as IndexPath) {
switch indexPath.row {
case 0...MyVariables.count-1:
do {
if (searchActive == true) {
object2 = filteredData[indexPath.row] as AnyObject
print("filtereddata", filteredData[indexPath.row]) //prints Westminster Savings Credit Union
//MyVariables.urlString = ? //not sure how to assign it to urlString
print("urlString in didselectrow", MyVariables.urlString)
MyVariables.companyImage = UIImage(named: filteredData[indexPath.row])// correct image
}
else
{
MyVariables.urlString = [MyVariables.siteAddresses![indexPath.row]]
print("MyVariablessiteAddresses",[MyVariables.siteAddresses![indexPath.row]])
print("urlString in didselectrow", MyVariables.urlString)
MyVariables.companyImage = UIImage(named: MyVariables.test![indexPath.row])
}
}
default:
do {
MyVariables.urlString = ["https://sunwoodsquare.com/store-directory/"]
MyVariables.companyImage = UIImage(named: MyVariables.test![indexPath.row])
}
}
}
}
public func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
filteredData = (MyVariables.test?.filter { $0.range(of: searchText, options: .caseInsensitive) != nil })!
if(filteredData.count == 0){
searchActive = false;
} else {
searchActive = true;
}
self.tableView.reloadData()
}
答案 0 :(得分:1)
标题具有误导性。 searchBar不记得第一行。这是您实施中的一个问题。由于您未在MyVariables.urlString
下为if (searchActive == true)
分配任何值,因此只会使用分配给它的最后一个值。
至于如何在if (searchActive == true)
下访问所述值,您必须创建一个filteredSiteAddresses
数组。当您更新filteredData
中的searchBar(_ searchBar: UISearchBar, textDidChange searchText: String)
数组时,您还必须更新filteredSiteAddresses
。然后在if (searchActive == true)
下,您可以执行类似
MyVariables.urlString = [MyVariables.filteredSiteAddresses![indexPath.row]]