2016-07-11 3 views
2

У меня есть панель поиска в моем заголовке таблицы. Для этого я использую uisearchcontroler. Но он обновляет данные tablview, когда я отправляю текстовые сообщения в строке поиска, мне нужно обновить tablview, когда нажата кнопка поиска на клавиатуре, потому что я получаю данные для поиска в api и каждый раз, когда я отправляю текстовые сообщения в поисковой строке, которую она запрашивает, и это занимает много времени. Как я могу это решить?Как искать, когда кнопка поиска нажата на клавиатуре?

var resultSearchController = UISearchController() 
var indicator:UIActivityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.Gray) 
var ref=UIRefreshControl() 
override func viewDidLoad() { 
    super.viewDidLoad() 


    self.resultSearchController = ({ 
     let controller = UISearchController(searchResultsController: nil) 
     controller.searchResultsUpdater = self 
     controller.dimsBackgroundDuringPresentation = false 
     controller.searchBar.sizeToFit() 

     self.tableView.tableHeaderView = controller.searchBar 

     return controller 
    })() 

    indicator.frame = CGRectMake(0.0, 0.0, 40.0, 40.0); 
    indicator.center = view.center 
    view.addSubview(indicator) 
    indicator.bringSubviewToFront(view) 

    indicator.startAnimating() 
    UIApplication.sharedApplication().networkActivityIndicatorVisible = true 

    getRequests.getType1(tableView,spinner: indicator) 

    ref.addTarget(self, action: #selector(Catalog1TableViewController.refresh(_:)), forControlEvents: UIControlEvents.ValueChanged) 
    ref.attributedTitle = NSAttributedString(string: "Загрузка") 
    tableView.addSubview(ref) 

} 


func updateSearchResultsForSearchController(searchController: UISearchController) 
{ 
    indicator.startAnimating() 
    UIApplication.sharedApplication().networkActivityIndicatorVisible = true 
    tableView.reloadData() 
    getRequests.getProduct(tableView, spinner: indicator,name: searchController.searchBar.text!) 
    for item in getRequests.product { 
     if item.productTitle.containsString(searchController.searchBar.text!){ 
      filteredTableData.append(item) 
     } 

    } 
    tableView.reloadData() 
} 

ответ

3

Try реализовать метод UISearchBar Делегирование:

func searchBarSearchButtonClicked(searchBar: UISearchBar) 
+0

не работает, потому что я использую searchcontroller –

0

Вы должны реализовать что-то подобное в вашем контроллере представления.

var resultSearchController = UISearchController() 
resultSearchController.searchBar.delegate = self 

extension ViewController: UISearchBarDelegate { 
    func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { 
     print("search button click") 
    } 
}