如何更改segmentedControl以在swift 3.0中工作?

时间:2016-12-31 03:43:35

标签: swift

我正在尝试将行segmentedControl.addTarget(self, action: "mapTypeChanged:", for: .valueChanged)更改为在swift 3.0中工作。据我所知,"mapTypeChanged:"是一个任意名称,可能是任何东西,所以它不是我在其他任何地方所做的功能。从在线的所有其他来源我被告知放segmentedControl.addTarget(self, action: #selector(class.mapTypeChanged, for: .valueChanged),但我不知道与此相关的任何类?

该行之后的函数声明是:

func mapTypeChanged(segControl: UISegmentedControl) {
        switch segControl.selectedSegmentIndex {
        case 0:
            mapView.mapType = .standard
        case 1:
            mapView.mapType = .hybrid
        case 2:
            mapView.mapType = .satellite
        default:
            break
        }
    }

我该怎么做才能解决这个问题?感谢。

我正在阅读一本书,这就是我得到原始行的地方,但它是在swift 3.0之前编写的。到目前为止,Xcode已经很好地为我做了更改,但是在我做出建议的更改后,这个没有正常运行。我被卡住了。

解决:segmentedControl.addTarget(self, action: #selector(mapTypeChanged), for: .valueChanged)

我现在觉得很愚蠢,因为我自己写了一个字面意义上的函数。我的脑子里画了一个空白,我只是没有连接点。从来没有我还不知道swift 3.0的语法是如何用于原始代码的。谢谢大家的帮助!

2 个答案:

答案 0 :(得分:2)

 action: #selector(mapTypeChanged),

一切都会好的。

答案 1 :(得分:1)

 # modify data for retain.columns
  for (var in retain.columns)
    O[[var]] <- ifelse(M$is.new, as.character(M[[paste0(var, ".new")]]),
                     as.character(M[[paste0(var, ".old")]]))