我正在尝试使用分段控制按钮更改地图类型,我希望它可以使用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 } }