iOS - 使用 GoogleMaps SDK 时出现 Segue 问题
iOS - Segue issue while using GoogleMaps SDK
我在使用 GoogleMapsSDK 时遇到了一个奇怪的问题。在我显示 Google 地图的视图中,嵌入了一个导航控制器。在导航栏上,我有一个已连接到新视图的栏按钮。按下按钮时,segue 卡顿,不显示任何内容。
这是正在发生的事情:http://gph.is/2putLtQ
不确定是什么问题。我在没有实施 GoogleMapsSDK 的情况下使用相同的设置。
这是 Google地图视图控制器:
import UIKit
import GoogleMaps
class GoogleMapsViewController: UIViewController, CLLocationManagerDelegate, GMSMapViewDelegate {
var locationManager = CLLocationManager()
var tacoLocations = [TacoLocation]()
var tacoLocationPlace_id :String!
override func viewDidLoad() {
super.viewDidLoad()
self.locationManager = CLLocationManager()
self.locationManager.delegate = self
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
self.locationManager.distanceFilter = kCLDistanceFilterNone
self.locationManager.requestWhenInUseAuthorization()
self.locationManager.startUpdatingLocation()
let lat = self.locationManager.location?.coordinate.latitude
let lng = self.locationManager.location?.coordinate.longitude
// creates the map and zooms the current user location, at a 15.0 zoom
let camera = GMSCameraPosition.camera(withLatitude: lat!, longitude: lng!, zoom: 15.0)
let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)
view = mapView
for location in self.tacoLocations {
let marker = GMSMarker()
let lat = location.locationLat
let lng = location.locationLng
marker.position = CLLocationCoordinate2D(latitude: lat!, longitude: lng!)
marker.title = location.name
if location.open_now == false {
marker.snippet = "\(location.vicinity!)\nClosed"
} else if location.open_now == true {
marker.snippet = "\(location.vicinity!)\nOpen"
} else {
}
marker.userData = location
marker.icon = UIImage(named: "taco_marker.png")
marker.infoWindowAnchor = CGPoint(x: 0.5, y: 0.2)
marker.map = mapView
}
// enable my location dot
mapView.isMyLocationEnabled = true
mapView.delegate = self
}
//MARK: GMSMapViewDelegate
func mapView(_ mapView: GMSMapView, markerInfoWindow marker: GMSMarker) -> UIView? {
let customWindow = Bundle.main.loadNibNamed("CustomInfoWindow", owner: self, options: nil)?.first as! CustomInfoWindow
customWindow.nameLabel.text = marker.title
customWindow.addressLabel.text = marker.snippet
return customWindow
}
func mapView(_ mapView: GMSMapView, didTapInfoWindowOf marker: GMSMarker) {
let tacoLocation = marker.userData as! TacoLocation
self.tacoLocationPlace_id = tacoLocation.place_id
DispatchQueue.main.async {
self.performSegue(withIdentifier: "MoreInfoSegue", sender: self)
}
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "MoreInfoSegue" {
let tabVC = segue.destination as! UITabBarController
let moreInfoVC = tabVC.viewControllers?[0] as! MoreInfoViewController
let reviewVC = tabVC.viewControllers?[1] as! ReviewViewController
moreInfoVC.tacoLocationPlace_id = self.tacoLocationPlace_id
reviewVC.tacoLocationPlace_id = self.tacoLocationPlace_id
} else if segue.identifier == "ARSegue" {
//segue to new view that is not working correctly.
}
}
}
第二个视图控制器中唯一的东西是viewdidload。
非常感谢任何帮助!
我卸载了 google 地图 pods,然后重新安装了它们。这解决了我的问题。一定是 xcode.
的错误
我在使用 GoogleMapsSDK 时遇到了一个奇怪的问题。在我显示 Google 地图的视图中,嵌入了一个导航控制器。在导航栏上,我有一个已连接到新视图的栏按钮。按下按钮时,segue 卡顿,不显示任何内容。
这是正在发生的事情:http://gph.is/2putLtQ
不确定是什么问题。我在没有实施 GoogleMapsSDK 的情况下使用相同的设置。
这是 Google地图视图控制器:
import UIKit
import GoogleMaps
class GoogleMapsViewController: UIViewController, CLLocationManagerDelegate, GMSMapViewDelegate {
var locationManager = CLLocationManager()
var tacoLocations = [TacoLocation]()
var tacoLocationPlace_id :String!
override func viewDidLoad() {
super.viewDidLoad()
self.locationManager = CLLocationManager()
self.locationManager.delegate = self
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
self.locationManager.distanceFilter = kCLDistanceFilterNone
self.locationManager.requestWhenInUseAuthorization()
self.locationManager.startUpdatingLocation()
let lat = self.locationManager.location?.coordinate.latitude
let lng = self.locationManager.location?.coordinate.longitude
// creates the map and zooms the current user location, at a 15.0 zoom
let camera = GMSCameraPosition.camera(withLatitude: lat!, longitude: lng!, zoom: 15.0)
let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)
view = mapView
for location in self.tacoLocations {
let marker = GMSMarker()
let lat = location.locationLat
let lng = location.locationLng
marker.position = CLLocationCoordinate2D(latitude: lat!, longitude: lng!)
marker.title = location.name
if location.open_now == false {
marker.snippet = "\(location.vicinity!)\nClosed"
} else if location.open_now == true {
marker.snippet = "\(location.vicinity!)\nOpen"
} else {
}
marker.userData = location
marker.icon = UIImage(named: "taco_marker.png")
marker.infoWindowAnchor = CGPoint(x: 0.5, y: 0.2)
marker.map = mapView
}
// enable my location dot
mapView.isMyLocationEnabled = true
mapView.delegate = self
}
//MARK: GMSMapViewDelegate
func mapView(_ mapView: GMSMapView, markerInfoWindow marker: GMSMarker) -> UIView? {
let customWindow = Bundle.main.loadNibNamed("CustomInfoWindow", owner: self, options: nil)?.first as! CustomInfoWindow
customWindow.nameLabel.text = marker.title
customWindow.addressLabel.text = marker.snippet
return customWindow
}
func mapView(_ mapView: GMSMapView, didTapInfoWindowOf marker: GMSMarker) {
let tacoLocation = marker.userData as! TacoLocation
self.tacoLocationPlace_id = tacoLocation.place_id
DispatchQueue.main.async {
self.performSegue(withIdentifier: "MoreInfoSegue", sender: self)
}
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "MoreInfoSegue" {
let tabVC = segue.destination as! UITabBarController
let moreInfoVC = tabVC.viewControllers?[0] as! MoreInfoViewController
let reviewVC = tabVC.viewControllers?[1] as! ReviewViewController
moreInfoVC.tacoLocationPlace_id = self.tacoLocationPlace_id
reviewVC.tacoLocationPlace_id = self.tacoLocationPlace_id
} else if segue.identifier == "ARSegue" {
//segue to new view that is not working correctly.
}
}
}
第二个视图控制器中唯一的东西是viewdidload。
非常感谢任何帮助!
我卸载了 google 地图 pods,然后重新安装了它们。这解决了我的问题。一定是 xcode.
的错误