Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 函数按错误的顺序开火_Ios_Swift_Uitableview_Mapkit - Fatal编程技术网

Ios 函数按错误的顺序开火

Ios 函数按错误的顺序开火,ios,swift,uitableview,mapkit,Ios,Swift,Uitableview,Mapkit,我正在编写一个UISearchBar,附带一个UITableView,使用Apple的NLP工具包、Mapkit等来建议相关位置。目标是当用户选择其中一行时,地图将缩放到纬度和经度。但是,我遇到了一个问题,当人们试图选择一个建议的行时,函数searchBarShoulDediting()在didSelectRowAt()之前执行,隐藏tableView,不允许用户选择该行。我可以指定在此实例中首先执行哪个函数吗 override func viewDidLoad(){ searchBar

我正在编写一个UISearchBar,附带一个UITableView,使用Apple的NLP工具包、Mapkit等来建议相关位置。目标是当用户选择其中一行时,地图将缩放到纬度和经度。但是,我遇到了一个问题,当人们试图选择一个建议的行时,函数searchBarShoulDediting()在didSelectRowAt()之前执行,隐藏tableView,不允许用户选择该行。我可以指定在此实例中首先执行哪个函数吗

override func viewDidLoad(){
    searchBar.delegate = self     
    searchTableView.delegate = self
    searchTableView.dataSource = self
    searchCompleter.delegate = self
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let searchRequest = MKLocalSearchRequest(completion: mapItems[indexPath.row])
        let search = MKLocalSearch(request: searchRequest)
        search.start { (response, error) in
            let coordinate = response?.mapItems[indexPath.row].placemark.coordinate
            self.zoomToLatestLocation(with: coordinate!)
            self.searchTableView.isHidden = true
        }
}    

func searchBarShouldEndEditing(_ searchBar: UISearchBar) -> Bool {
    print(1)
    self.searchTableView.isHidden = true
    return true
}

当搜索栏失去焦点时,将调用
searchBarDidEndEditing
。不要将表格视图隐藏在
searchBarDidEndEditing
中,而是将其放置在
didSelectRow
@user1046037中,这样可以工作,但当我选择除表格视图和搜索栏之外的其他视图时,我需要隐藏表格视图。要将触摸手势识别器添加到其他视图中是否困难?按钮也是如此。我这样说的原因是因为这是启动的顺序。“我可以指定在这个实例中首先执行哪个函数吗?”不。恰恰相反:由您将代码插入正确的位置,以便正确执行操作。