Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.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 UISearchController与使用Swift的谷歌地图_Ios_Swift_Google Maps_Uisearchbar_Uisearchcontroller - Fatal编程技术网

Ios UISearchController与使用Swift的谷歌地图

Ios UISearchController与使用Swift的谷歌地图,ios,swift,google-maps,uisearchbar,uisearchcontroller,Ios,Swift,Google Maps,Uisearchbar,Uisearchcontroller,我正在尝试创建一个屏幕,其中将有一个覆盖整个屏幕的谷歌地图和顶部显示所选地址(标记指向的位置)的按钮。 我希望当用户点击该按钮时,会显示一个UISearchBar,在那里他可以使用GooglePlacesAPI搜索位置 我一直在遵循以下教程: 不幸的是,在我的情况下,搜索栏没有出现(尽管按下按钮时背景变暗) 下面是我按下按钮之前和之后的一些屏幕截图 这是我的视图控制器的代码 class ChooseLocationViewController: UIViewController, GMSM

我正在尝试创建一个屏幕,其中将有一个覆盖整个屏幕的谷歌地图和顶部显示所选地址(标记指向的位置)的按钮。 我希望当用户点击该按钮时,会显示一个UISearchBar,在那里他可以使用GooglePlacesAPI搜索位置

我一直在遵循以下教程:

不幸的是,在我的情况下,搜索栏没有出现(尽管按下按钮时背景变暗)

下面是我按下按钮之前和之后的一些屏幕截图

这是我的视图控制器的代码

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(red: 248/255, green: 248/255, blue: 248/255, alpha: 1.0)
        addressButton.layer.borderColor = UIColor(red: 178/255, green: 178/255, blue: 178/255, alpha: 1.0).CGColor
        addressButton.layer.borderWidth = 1.0
        addressButton.layer.cornerRadius = 5
        addressButton.setTitleColor(UIColor(red: 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)
                    }
                }
            }
        }
    }
}
另外,我之所以要更改ExtendedLayoutCludeSopaqueBars,是因为我注意到在我有搜索栏的其他视图中,这是正确显示它所必需的。在这种情况下,无论我是否这样做,我都会得到完全相同的行为(搜索栏没有显示)


我做错了什么?有人有类似的问题吗?

可能会发布源文件的完整代码,以查看是否有其他视图与搜索控制器发生冲突?@Shubhank这是完整代码。这里没有显示的唯一附加内容是我在interface builder中包含的导航栏(导航项)。但我不认为这会影响任何事情,因为正如我所提到的,我有其他的视图,包括搜索控制器和导航栏,它工作得很好。我认为问题是因为谷歌地图视图,但我不知道为什么或如何解决它!