一个按钮,有多种功能- Swift



我正在制作一个动作按钮,每次按下按钮时实现不同的功能。当我点击一次时,地图变成卫星,当我再次点击它时,它变成标准,当我再次点击它时,它变成混合,当我再次点击它时,它回到卫星

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

    @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
    }
}

我得到的错误是:

Int类型的表达式模式不能匹配Any类型的值ViewController.swift

我假设该方法是通过按一个UIButton调用?如果是,可以将AnyObject替换为UIButton。然后你可以使用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
    }
}

为了保持"快速",你可以删除switch值周围的括号以及enum的类型。div;)

一种简单的方法就是将枚举转换为原始值。

@IBAction func changeLayout(_ sender: UIButton) {
    mapView.mapType = MKMapType(rawValue: (mapView.mapType.rawValue + 1) % 2 )
}

这假设你想要的原始值是0,1,2(我认为它们是)

最新更新