【发布时间】:2016-10-21 13:40:20
【问题描述】:
我有一个带有搜索栏作为标题的 UITableView。 当用户在搜索栏中进行搜索时,我使用此功能更新我的数据。
func updateSearchResults(for searchController: UISearchController) {
if let searchText = searchController.searchBar.text {
if (searchText.characters.count > 0) {
self.filteredResults = [];
self.locationManager?.geocodeAddressString(addressString: searchText, completionHandler: { (results, error) in
if error == nil && results != nil {
self.filteredResults = results!;
self.tableView.reloadData();
}
});
}
else {
self.filteredResults = [];
self.tableView.reloadData();
}
}
}
当我在 UITableView 中选择一个单元格时,这个函数。
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
self.delegate?.setCity(city: str);
self.dismiss(animated: true, completion: nil);
}
这是我的问题:视图控制器不会在第一次点击单元格时关闭。我点击一次,搜索栏退出响应者。而且我需要点击两次才能执行解雇。
这是我如何在 viewDidLoad 中链接我的表格视图和搜索栏:
// Search Bar componants
self.searchController = UISearchController(searchResultsController: nil);
self.searchController.delegate = self;
self.searchController.searchResultsUpdater = self;
self.searchController.hidesNavigationBarDuringPresentation = false
self.searchController.dimsBackgroundDuringPresentation = false;
self.searchBar = self.searchController.searchBar;
self.searchBar.searchBarStyle = .default;
self.searchBar.delegate = self;
self.searchBar.placeholder = NSLocalizedString("search.city", comment: "search.city").capitalized;
self.tableView = UITableView(frame: CGRect.zero, style: .plain);
self.tableView.translatesAutoresizingMaskIntoConstraints = false;
self.tableView.delegate = self;
self.tableView.backgroundColor = UIColor.white;
self.tableView.dataSource = self;
self.tableView.tableHeaderView = self.searchBar;
self.view.addSubview(self.tableView);
如果有人可以帮助我,那就太好了:)
【问题讨论】:
-
只是在黑暗中拍摄,如果您先切换语句并关闭视图,它会按预期工作吗?
-
没有。我真的看起来像第一次点击只是结束搜索栏编辑
-
如果您在
didSelectRowAt中设置断点,断点会在第一次点击时命中吗?
标签: ios swift uitableview search uisearchbar