一键多用 - Swift

Kel*_*Tan -2 xcode switch-statement swift

我正在制作一个动作按钮,每次按下按钮时都会实现不同的功能。当我单击一次时,地图变为Satellite,当我再次单击它时,它变为标准,当我再次单击它时,它变为混合,当我再次单击它时,它又回到Satellite

这是我的代码。请让我知道我哪里做错了。

    @IBAction func changeLayout(_ sender: AnyObject) {
    switch (sender.anyObject()) {
    case 0:
        mapView.mapType = MKMapType.satellite
    case 1:
        mapView.mapType = MKMapType.standard
    default:
        mapView.mapType = MKMapType.hybrid
    }

}
Run Code Online (Sandbox Code Playgroud)

我得到的错误说:

“Int”类型的表达式模式不能匹配“Any?”类型的值 视图控制器.swift

小智 5

我假设该方法是通过按下 UIButton 来调用的?如果是这样,您可以替换AnyObjectUIButton. 然后您可以使用 UIButton 的tag属性来检查当前状态。

@IBAction func changeLayout(_ sender: UIButton) {
    sender.tag += 1
    if sender.tag > 2 { sender.tag = 0 }

    switch sender.tag { 
    case 1:
        mapView.mapType = .satellite
    case 2:
        mapView.mapType = .hybrid
    default:
        mapView.mapType = .standard
    }
}
Run Code Online (Sandbox Code Playgroud)

为了保持“快速”,您可以删除开关值周围的括号以及枚举的类型。;)