LoginSignup
1
1

More than 5 years have passed since last update.

MapKitWrapperのCoordinateRegionでエラーが起きると思ったら

Last updated at Posted at 2014-05-16

以下の条件でプロトタイプを作っていて発生した問題。
解決策を先に書くと「 StoryboardからMapViewをセットしない 」ということに。

問題が発生したのは以下のような状況から。

  • 簡単な地図アプリ
  • StoryBoard利用
  • MapViewはStoryBoard上で設置して、ibで接続
map_view_controller.rb
class MapViewController < UIViewController
  extend IB
  include MapKit

  outlet :map, MKMapView

  def viewDidLoad
    super

    # 初期の場所をここで指定するとすると・・・
    @map.region = CoordinateRegion.new([35.681382, 139.766084], [3.1, 3.1]) # -> 落ちる!
  end
end

それでStoryboardとの接続を切って、すべてコード内で地図を初期化してみたらうまく動きました。

map_view_controller.rb
class MapViewController < UIViewController
  include MapKit

  def viewDidLoad
    @map = MapView.new.tap do |m|
      m.frame = view.frame
      m.region = CoordinateRegion.new([35.681382, 139.766084], [3.1, 3.1]) # -> うまく動きます
    end
    view.addSubView @map
  end
end

取り敢えずStoryboardでMapViewを定義しないことにします。ふぅ。。。

追記

  1. StoryboardではUIViewを定義
  2. そのUIViewのsubViewとしてMapViewをコード上で初期化する

とやれば簡単に解決することに気付きました・・・。
やれやれだぜ。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1