UISearchController con Google Maps usando Swift

Estoy tratando de crear una pantalla en la que vaya a haber un map de Google que cubra toda la pantalla y un button en la parte superior que muestre la dirección seleccionada (donde señala el marcador). Y quiero que cuando el usuario click ese button se presente una UISearchBar donde pueda search ubicaciones utilizando la API de Google Places.

He seguido el siguiente tutorial: https://www.youtube.com/watch?v=gRQUoHleCGM

Desafortunadamente, en mi caso, la barra de búsqueda no aparece (aunque el background se atenúa cuando presiono el button).

Aquí hay algunas capturas de pantalla desde antes de presionar el button y después.

introduzca la descripción de la imagen aquí

introduzca la descripción de la imagen aquí

Y este es el código de mi controller de vista.

class ChooseLocationViewController: UIViewController, GMSMapViewDelegate, UISearchBarDelegate, UISearchControllerDelegate { let geocoder = GMSGeocoder() var mapView: GMSMapView = GMSMapView.mapWithFrame(CGRectZero, camera:GMSCameraPosition.cameraWithLatitude(51.515339, longitude: -0.141838, zoom: 16)) var addressButton: UIButton = UIButton() let locationManager = CLLocationManager() override func viewDidLoad() { super.viewDidLoad() mapView.delegate = self let marker = UIImageView(frame: CGRect(x: 20, y: 20, width: 50, height: 50)) marker.image = UIImage(named: "default-marker") marker.center.x = self.view.center.x marker.center.y = self.view.center.y - (self.navigationController?.navigationBar.frame.size.height)! addressButton = UIButton(frame: CGRect(x: 20, y: 20, width: self.view.frame.size.width - 25, height: 47)) addressButton.center.x = self.view.center.x addressButton.backgroundColor = UIColor(networking: 248/255, green: 248/255, blue: 248/255, alpha: 1.0) addressButton.layer.borderColor = UIColor(networking: 178/255, green: 178/255, blue: 178/255, alpha: 1.0).CGColor addressButton.layer.borderWidth = 1.0 addressButton.layer.cornerRadius = 5 addressButton.setTitleColor(UIColor(networking: 68/255, green: 68/255, blue: 68/255, alpha: 1.0), forState: .Normal) addressButton.titleLabel?.font = UIFont.systemFontOfSize(13) addressButton.addTarget(self, action: "showLocationSearch", forControlEvents: .TouchDown) self.view = mapView self.view.addSubview(marker) self.view.addSubview(addressButton) } func showLocationSearch() { let searchController = UISearchController(searchResultsController: nil) searchController.delegate = self searchController.searchBar.delegate = self self.presentViewController(searchController, animated: true, completion: nil) } func willPresentSearchController(searchController: UISearchController) { self.navigationController?.extendedLayoutIncludesOpaqueBars = true } func willDismissSearchController(searchController: UISearchController) { self.navigationController?.extendedLayoutIncludesOpaqueBars = false } func mapView(mapView: GMSMapView, idleAtCameraPosition position: GMSCameraPosition) { let coordinate = position.target geocoder.reverseGeocodeCoordinate(coordinate) { response, error in if let address = response?.firstResult() { if let lines = address.lines { if (lines.count > 0) { self.addressButton.setTitle(lines[0], forState: .Normal) } } } } } } 

Además, la razón por la que estoy cambiando el ExtendedLayoutIncludesOpaqueBars es porque noté que en otras vistas donde tengo una barra de búsqueda, esto es necesario para que se presente correctamente. En este caso, obtengo exactamente el mismo comportamiento (la barra de búsqueda no se muestra) si hago eso o no.

¿Qué estoy haciendo mal? ¿Alguien tuvo un problema similar?