我正在尝试使用分段控制按钮更改地图类型,我希望它可以使用3个选项更改地图类型:标准,卫星和混合.到目前为止,我有这个代码但是一旦选择了不同的地图类型就没有任何反应: @IB
@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的新手所以感谢任何帮助:)
谢谢
首先,确保在分段控件选择更改时调用方法.很容易忘记连接插座方法.一旦确认了这一点,请记住地图数据是异步加载的,因此在选择其他模式后,您可能看不到它立即更改.但是,使用您发布的代码,您将永远不会看到.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在每种情况结束时都不需要break语句.
编辑:Swift 4.1
@IBAction func mapTypeSegmentSelected(_ sender: UISegmentedControl) {
switch sender.selectedSegmentIndex {
case 0:
mapView.mapType = .normal
case 1:
mapView.mapType = .satellite
default:
mapView.mapType = .hybrid
}
}
