我正在尝试使用分段控制按钮更改 map 类型,我希望它可以通过 3 个选项更改 map 类型:标准、卫星和混合。到目前为止,我有这段代码,但是一旦选择了不同的 map 类型,什么也不会发生:
@IBAction func segmentedControlAction(sender: UISegmentedControl!) {
if sender.selectedSegmentIndex == 0{
mapView.mapType = MKMapType.Standard
}
else if sender.selectedSegmentIndex == 1{
mapView.mapType = MKMapType.Satellite
}
else if sender.selectedSegmentIndex == 3{
mapView.mapType = MKMapType.Hybrid
}
}
我是 Swift 和 Xcode 的新手,所以非常感谢您的帮助:)
谢谢
最佳答案
首先,确保在分段控件选择更改时调用您的方法。很容易忘记连接 socket 方法。确认后,请记住 map 数据是异步加载的,因此您可能不会在选择不同模式后立即看到它发生变化。但是,使用您发布的代码,您永远不会看到 .Hybrid
类型,因为 3 段控件中的 selectedSegmentIndex
将永远是3。
实现此方法的更简洁的方法是:
@IBAction func segmentedControlAction(sender: UISegmentedControl!) {
switch (sender.selectedSegmentIndex) {
case 0:
mapView.mapType = .Standard
case 1:
mapView.mapType = .Satellite
default:
mapView.mapType = .Hybrid
}
}
请注意,Swift 不需要在每个 case
末尾都有 break
语句。
编辑:Swift 4.1
@IBAction func mapTypeSegmentSelected(_ sender: UISegmentedControl) {
switch sender.selectedSegmentIndex {
case 0:
mapView.mapType = .standard
case 1:
mapView.mapType = .satellite
default:
mapView.mapType = .hybrid
}
}
关于swift - 通过分段控制更改 map 类型(混合、卫星),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33200161/