私はこのようなカスタムビューを作成しました:Swift4でセグメント制御を行うには?
import UIKit
import MapKit
class MapViewController: UIViewController {
var mapView: MKMapView!
func mapTypeChanged(segControl: UISegmentedControl){
switch segControl.selectedSegmentIndex {
case 0:
mapView.mapType = .standard
case 1:
mapView.mapType = .hybrid
case 2:
mapView.mapType = .satellite
default:
break
}
}
override func loadView() {
mapView = MKMapView()
view = mapView
let segmentedControl = UISegmentedControl(items: ["Standard", "Hybrid", "Satellite"])
segmentedControl.backgroundColor = UIColor.white.withAlphaComponent(0.5)
segmentedControl.selectedSegmentIndex = 0
segmentedControl.addTarget(self, action: "mapTypeChanged", for: .valueChanged)
segmentedControl.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(segmentedControl)
let topConstraint = segmentedControl.topAnchor.constraint(equalTo: topLayoutGuide.bottomAnchor, constant: 8)
let margins = view.layoutMarginsGuide
let leadingContraint = segmentedControl.leadingAnchor.constraint(equalTo: margins.leadingAnchor)
let trailingConstraint = segmentedControl.trailingAnchor.constraint(equalTo: margins.trailingAnchor)
topConstraint.isActive = true
leadingContraint.isActive = true
trailingConstraint.isActive = true
}
}
には、ビルドの問題はありません。しかし、私はアプリを実行し、分割されたコントロール上の任意のボタンをタップすると、アプリケーションを中止します。問題が何であるか把握することはできません。私はXcode 9ベータ版を使用しています。
は 'loadView'はまったく呼び出されず、マップビューは' nil'です。おそらく 'viewDidLoad'を意味するかもしれません。 – vadian
loadViewが呼び出され、mapが表示されます。地図のタイプを変更しようとするとアプリがクラッシュする – KawaiKx
どのようなエラーが表示されますか?不明なセレクタ? – vadian