2016-12-05 2 views
-1

У меня есть UISegmentedControl, который предназначен для переключения между 3 видами видов карты «Стандартный», «Гибрид» и «Спутник». Я получаю следующую ошибку в строке «.addTarget».Назначение цели для UISegmentedControl Swift 3

"Редактор заполнителем в исходном файле"

let segmentedControl = UISegmentedControl(items: ["Standard", "Hybrid", "Satellite"]) 
    segmentedControl.backgroundColor = UIColor.white.withAlphaComponent(0.5) 
    segmentedControl.selectedSegmentIndex = 0 

    // EVENT LISTENER FOR SEGMENT CONTROL 
    segmentedControl.addTarget(self, action: "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 
     } 

    } 

ответ

1
let segmentedControl = UISegmentedControl(items: ["Standard", "Hybrid", "Satellite"]) 
segmentedControl.backgroundColor = UIColor.white.withAlphaComponent(0.5) 
segmentedControl.selectedSegmentIndex = 0 

// EVENT LISTENER FOR SEGMENT CONTROL 
segmentedControl.addTarget(self, action: "mapTypeChanged:", for: .valueChanged) 

func mapTypeChanged() //removing the auto complete params 
{ 
    switch segControl.selectedSegmentIndex{ 
    case 0: 
     mapView.mapType = .standard 
    case 1: 
     mapView.mapType = .hybrid 
    case 2: 
     mapView.mapType = .satellite 
    default: 
     break 
    } 

} 

пожалуйста попробуйте с этим ..

0

Пару вещей происходит здесь. Вам нужно использовать #selector и изменить объявление своей функции, чтобы подавить первое имя аргумента, иначе вам придется объявить его также в селекторе.

let segmentedControl = UISegmentedControl(items: ["Standard", "Hybrid", "Satellite"]) 
    segmentedControl.backgroundColor = UIColor.white.withAlphaComponent(0.5) 
    segmentedControl.selectedSegmentIndex = 0 

// EVENT LISTENER FOR SEGMENT CONTROL 

segmentedControl.addTarget(nil, action: #selector(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 
    } 
} 
+0

Я получаю новое сообщение об ошибке: – dave

+0

«Использование локальной переменной„mapTypeChanged“перед его декларации» – dave

+0

Где вы вставляете этот код? Внутри ViewController? –

Смежные вопросы