一个具有多种功能的按钮 - Swift

时间:2016-09-22 21:26:27

标签: swift xcode switch-statement

我正在制作一个操作按钮,每按一次按钮就会执行不同的功能。点击一次,地图变为卫星,当我再次点击它时,它会变为标准,当我再次点击它时,它会变为 hybrid < / strong>当我再次点击它时,它会回到卫星

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

    @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

2 个答案:

答案 0 :(得分:4)

我假设通过按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
    }
}

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

答案 1 :(得分:0)

一种简单的方法就是使用原始值切换枚举。

table = document.getElementById('id_of_your_table');
table.innerHTML = table.innerHTML + '<tr><td>total</td><td>6</td></tr>';

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