azulceruleo
@azulceruleo (碧 あお)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

NavigationControllerを用いた画面遷移がうまくいかない

解決したいこと

NavigationControllarを用いた画面遷移をしようとしており、一画面目のボタンを押したら、二画面目に遷移するようにしたいのですが、一画面目のボタンを押すと、下記のエラーが出ます。

"-[map.MapViewController toResultViewButtonAction:]: unrecognized selector sent to instance 0x7fad498079c0"

一画面目と二画面目のクラス名が間違ってないか確認しましたが、あっており解決方法がわからないです。
ご教授よろしくお願い致します。

一画面目のコード全文

import UIKit
import MapKit       //地図
import CoreLocation //位置情報

class MapViewController: UIViewController,CLLocationManagerDelegate {

    @IBOutlet weak var map: MKMapView!              //地図関連付け
    @IBOutlet weak var decisionButton: UIButton!    //検索範囲決定ボタン
    
    var locationManager = CLLocationManager()
    
    var latitude: Double = 0.0   //Double型緯度プロパティ
    var longitude: Double = 0.0  //Double型経度プロパティ
    var s_latitude: String?      //Optional String型緯度プロパティ
    var s_longitude: String?     //Optional String型経度プロパティ
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        navigationItem.title = "半径を設定してください"                             //ナビゲーションコントローラのタイトル設定
        
        let center = CLLocationCoordinate2DMake(35.681236,139.767125)           //最初の中心座標
        let span = MKCoordinateSpan(latitudeDelta: 0.07, longitudeDelta: 0.07)  //表示範囲
        let region = MKCoordinateRegion(center: center, span: span)             //中心座標と表示範囲をマップに登録する
        map.setRegion(region, animated: true)
       
        //現在地を取得
        locationManager.requestAlwaysAuthorization()
        locationManager.requestWhenInUseAuthorization()
        if CLLocationManager.locationServicesEnabled() {
            locationManager.delegate = self
            locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
            locationManager.startUpdatingLocation()
        }
    }
    
    //現在地を取得する許可を求めるためのメソッド
    func permission(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
        switch status {
            
        case .notDetermined:                            //許可されてない場合
            manager.requestWhenInUseAuthorization()     //許可を求める
            
        case .restricted, .denied:                      //拒否されてる場合
            break                                       //何もしない
            
        case .authorizedAlways, .authorizedWhenInUse:   //許可されている場合
            manager.startUpdatingLocation()             //現在地の取得を開始
            break
            
        default:
            break
        }
    }
  
    //緯度経度
    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {

        s_latitude = (locations.last?.coordinate.latitude.description)  //緯度取得
        s_longitude = (locations.last?.coordinate.longitude.description)//経度取得
        
        if let s_latitude = s_latitude {  //s_latitudeのアンラップ
            latitude = NSString(string: s_latitude).doubleValue //String型の緯度をDouble型に変換
            UserDefaults.standard.set(latitude, forKey: "lat")  //UserDefaultsに緯度を保存
        }
        
        if let s_longitude = s_longitude {  //s_longitudeのアンラップ
            longitude = NSString(string: s_longitude).doubleValue   //String型の経度をDouble型に変換
            UserDefaults.standard.set(longitude, forKey: "lon")     //UserDefaultsに経度を保存
        }
        map.setCenter((locations.last?.coordinate)!, animated: true)    //マップ中心位置の更新
    }
    
}

エラー

スクリーンショット 2022-05-03 15.32.15.png

storyboard

スクリーンショット 2022-05-03 15.33.00.png

解決しました

storyboardのMapViewControllerのDecision ButtonのConnectionsインスペクタからtoResultViewButtonActionを削除したところ、直りました。

0

No Answers yet.

Your answer might help someone💌