didSelectRow在使用searchBar

时间:2017-10-05 03:59:55

标签: swift searchbar

我有一个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()
}

1 个答案:

答案 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]]