Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何正确地从pickerView切换到MapKitView_Ios_Swift_Segue - Fatal编程技术网

Ios 如何正确地从pickerView切换到MapKitView

Ios 如何正确地从pickerView切换到MapKitView,ios,swift,segue,Ios,Swift,Segue,敬礼 在我的主ViewController中有一个pickerView,在我的ViewController中有两个单独的mapKitView。我的问题是,当我试图通过单击我的按钮进行分段时,我的应用程序崩溃并抛出异常。这只是一个例外,当然不会给我太多 我处理segue的方法是,我通过手动将一个从VC1拖动到VC2来创建一个,并给它一个“viewMapSegue”标识符,然后我也给我的按钮一个标签1,因为这是我以前做的一个练习,我认为通过这种方式,我可以确保将值设置为segue时所需的值,而不是之

敬礼

在我的主ViewController中有一个pickerView,在我的ViewController中有两个单独的mapKitView。我的问题是,当我试图通过单击我的按钮进行分段时,我的应用程序崩溃并抛出异常。这只是一个例外,当然不会给我太多

我处理segue的方法是,我通过手动将一个从VC1拖动到VC2来创建一个,并给它一个“viewMapSegue”标识符,然后我也给我的按钮一个标签1,因为这是我以前做的一个练习,我认为通过这种方式,我可以确保将值设置为segue时所需的值,而不是之后所需的值

尽管如此,我仍不确定我犯了什么错误。我知道,如果我单独使用VC2代码和一些硬编码的lat/long值,它运行良好,并显示我输入的位置。代码如下:

城市数据:

import Foundation

class CityData {
    var cityName:String;
    var cityHighLight:String;
    var cityLat:Double;
    var cityLong:Double;

    init(cityName: String, cityHighLight:String, cityLat:Double, cityLong:Double) {
        self.cityName = cityName;
        self.cityHighLight = cityHighLight;
        self.cityLat = cityLat;
        self.cityLong = cityLong;
    }
}
VC1:

最后是地图视图所在的VC2:

//  ViewControllerTwo.swift
import UIKit
import MapKit

class ViewControllerTwo: UIViewController {

    var latChosen : Double = 0.0;
    var longChosen : Double = 0.0;


    @IBOutlet var myMap: MKMapView!

    override func viewDidLoad() {
        super.viewDidLoad()
        myMap.mapType = MKMapType.satellite;
        let initialLocation = CLLocation(latitude: latChosen, longitude: longChosen);
        let regionRadius: CLLocationDistance = 1000;

        func centerMapOnLocation(location : CLLocation) {
            let coordinateRegion = MKCoordinateRegionMakeWithDistance(location.coordinate, regionRadius, regionRadius);
            myMap.setRegion(coordinateRegion, animated: true);
        }

        centerMapOnLocation(location: initialLocation);


    }



    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()

    }


    /*
    // MARK: - Navigation

    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        // Get the new view controller using segue.destinationViewController.
        // Pass the selected object to the new view controller.
    }
    */

}

哇……我真不敢相信我没有想到要早点检查一下。所以很明显,我的按钮有两个链接,一个插座连接正常,另一个来自上帝知道的地方。哇

你知道,苹果真的应该发出警告,比如“嘿,检查你的链接,兄弟”。无声的错误会让人发疯

//  ViewControllerTwo.swift
import UIKit
import MapKit

class ViewControllerTwo: UIViewController {

    var latChosen : Double = 0.0;
    var longChosen : Double = 0.0;


    @IBOutlet var myMap: MKMapView!

    override func viewDidLoad() {
        super.viewDidLoad()
        myMap.mapType = MKMapType.satellite;
        let initialLocation = CLLocation(latitude: latChosen, longitude: longChosen);
        let regionRadius: CLLocationDistance = 1000;

        func centerMapOnLocation(location : CLLocation) {
            let coordinateRegion = MKCoordinateRegionMakeWithDistance(location.coordinate, regionRadius, regionRadius);
            myMap.setRegion(coordinateRegion, animated: true);
        }

        centerMapOnLocation(location: initialLocation);


    }



    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()

    }


    /*
    // MARK: - Navigation

    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        // Get the new view controller using segue.destinationViewController.
        // Pass the selected object to the new view controller.
    }
    */

}