2017-03-28 15 views
0

イブニングとSearchControllerは、私が検索コントローラを構築している、と私はまた、プログラム的に彼の検索バーを作成するためのコードを持っています。しかし、このコードをストーリーボードで設計された検索バーに置き換えたいと思います。iOSのスウィフト:ストーリーボードUISearchBar

だから私の質問は、私は、検索コントローラにコンセントを接続する方法、ありますか?私は検索バーに入力すると、結果が表に

どれを誇示していないため、私は、代表者に問題があると思う

public class CustomSearchController: UISearchController { 

    public var customSearchBar = UISearchBar() 

    override public var searchBar: UISearchBar { 
     get { 
      return self.customSearchBar 
     } 
    } 
} 

func configureSearchController() { 

    searchController = CustomSearchController() 
    searchController.searchResultsUpdater = self 
    searchController.dimsBackgroundDuringPresentation = false 
    searchController.hidesNavigationBarDuringPresentation = false 
    searchController.customSearchBar = self.customSearchBar 

    searchController.searchBar.delegate = self 

    self.definesPresentationContext = true 

} 

extension EarthSearcherTableViewController : UISearchResultsUpdating { 

    public func updateSearchResults(for searchController: UISearchController) { 
     //Code 
     guard let text = searchController.searchBar.text else { return } 

     self.getLocations(forSearchString: text) 
    } 

    fileprivate func getLocations(forSearchString searchString: String) { 

     let request = MKLocalSearchRequest() 
     request.naturalLanguageQuery = searchString 
     request.region = mapView.region 

     let search = MKLocalSearch(request: request) 
     search.start { (response, error) in 

      guard let response = response else { return } 
      self.locations = response.mapItems 
      self.tableView.reloadData() 
     } 
    } 

    @objc func zoomToCurrentLocation() { 


     //Clear existing pins 
     mapView.removeAnnotations(mapView.annotations) 
     mapView.removeOverlays(mapView.overlays) 

     let annotation = MKPointAnnotation() 
     annotation.coordinate = mapView.userLocation.coordinate 
     mapView.addAnnotation(annotation) 

     let span = MKCoordinateSpanMake(0.005, 0.005) 
     let region = MKCoordinateRegionMake(mapView.userLocation.coordinate, span) 
     mapView.setRegion(region, animated: true) 

     let location = CLLocation(latitude: mapView.userLocation.coordinate.latitude, longitude: mapView.userLocation.coordinate.longitude) 
     mapView.add(MKCircle(center: location.coordinate, radius: 50)) 


    } 

} 

このは私のコードですヒント?

答えて

1

サブクラスUISearchControllerして、必要な検索バーを返すためにsearchBarゲッターをオーバーライドします。あなたの方法で

public class mySearchController: UISearchController { 

    public var customSearchBar = UISearchBar() 
    override public var searchBar: UISearchBar { 
     get { 
      return customSearchBar 
     } 
    } 
} 

、あなたのsearchBarcustomSearchBarを設定します。

func configureSearchController() {  
    searchController = mySearchController() 
    searchController.customSearchBar = self.searchBar 
    //Other stuff... 
} 
+0

チップをありがとう、私にいくつかのコードを教えていただけますか?私は初心者です –

+1

@TheMiotz今すぐチェックしてください。 –

+0

ありがとう! 1つは欠けている、私は今代表を統合する方法を知らない –

関連する問題