0

私はこの問題に固執している5時間のようです。最近 Swift を始めましたが、気に入っているとは言えず、次々と問題が発生します。私は非常に単純なことをしようとしています。date(NSDate)、durration(NSTimeInterval)、locationName(String)、およびlocationMapView(MKMapView)を持つクラスがあります。プロトコルを実装していません。イニシャライザで座標を取得して MapView に設定したい。それを行う方法に関するガイドはほとんど見つかりませんでしたが、基本的なことに問題があります。地域を設定することさえできません。init のフラグメントは次のとおりです。

    self.locationMapView = MKMapView();

    let coordinate:CLLocationCoordinate2D = CLLocationCoordinate2D(latitude: 34.03, longitude: 118.14)
    let span = MKCoordinateSpanMake(100, 80)
    let region = MKCoordinateRegionMake(coordinate, span)
    self.locationMapView!.setRegion(region, animated: true)

    print(String(region))
    print("---")
    print(String(locationMapView!.region))

そして、コンソールに表示されるものは次のとおりです。

    MKCoordinateRegion(center: __C.CLLocationCoordinate2D(latitude: 34.03, longitude: 118.14), span: __C.MKCoordinateSpan(latitudeDelta: 100.0, longitudeDelta: 80.0))
        ---
    MKCoordinateRegion(center: __C.CLLocationCoordinate2D(latitude: nan, longitude: nan), span: __C.MKCoordinateSpan(latitudeDelta: 0.0, longitudeDelta: 0.0))

値が割り当てられていないことを理解するのにしばらく時間がかかりましたが、その理由はわかりません。この種のコードは、多くの回答とガイドで見つかりました。実装の何が問題になっていますか?

助けてくれてありがとう、これがばかげたことならごめんなさい。

4

2 に答える 2

2

問題は次の行です。

self.locationMapView = MKMapView();

マップ ビューを作成しましたが、フレームを割り当てていません。したがって、サイズはゼロです。したがって、リージョンを持つことはできません。

于 2016-02-27T14:37:46.377 に答える
0

部分的な回答:

もう少し深く掘り下げて、答えがあると思います。(アウトレット経由で)ディスプレイに直接接続されていない場合、 MKMapView オブジェクトに何も割り当てることができないようです。

私がしたことは、クラスから MapView に接続されているものをすべて削除し、特定の MapView へのアウトレットを保持する UITableViewCell ベースのクラスに移動したことです。そこで座標を割り当てることができ、すべてが意図したとおりに機能しました。

注: tempMapView などの追加の変数を操作して、実際の MapView に割り当てることはできません。うまくいきません。

私と同じ問題に遭遇した人々の助けになれば幸いです。ディスプレイに直接接続されていない MapView を使用できない理由、またはその回避方法を誰かが知っている場合は、お知らせください。

于 2016-02-27T14:30:01.800 に答える