2016-09-14 4 views
-1

Я пытаюсь добавить панель вкладок в верхней части моей карты Google, однако, всякий раз, когда я запускаю этот код Xcode всегда падает и говорит мне «Фатальная ошибка: неожиданно нашел ноль в то время как разворачивание необязательного значения»Как добавить вкладку поверх моей карты google?

Вот мой код:

@IBOutlet var tabControlller: UITabBar! 

override func loadView() { 
    let camera = GMSCameraPosition.cameraWithLatitude(25.0330, longitude: 121.5654, zoom: 6.0) 
    let mapView = GMSMapView.mapWithFrame(CGRectMake(10, 10, 10, 10), camera: camera) 
    mapView.myLocationEnabled = true 
    mapView.settings.tiltGestures = true 
    mapView.settings.rotateGestures = true 

    view = mapView 
    view.insertSubview(tabControlller, aboveSubview: mapView) 


    // Creates a marker in the center of the map 
    let marker = GMSMarker() 
    marker.position = CLLocationCoordinate2D(latitude: 25.0330, longitude: 121.5654) 
    marker.title = "Taipei" 
    marker.snippet = "Taiwan" 
    marker.map = mapView 

    let mapInsets = UIEdgeInsets(top: 100.0, left: 0.0, bottom: 0.0, right: 0.0) 
    mapView.padding = mapInsets 


} 

Я уверен, что ошибка происходит из view.insertSubview (tabControlller, aboveSubview: MAPview), однако, я не уверен, как добавить, что TabBar на вершине моей карте Google? Я делаю это программно или через IB?

Благодарим за помощь!

ответ

0

Ошибка вы получаете из-за разворачивания дополнительную переменную, которая содержит ноль.

В вашем коде tabControlller является необязательным.

Когда вы используете его в:

view.insertSubview(tabControlller, aboveSubview: mapView)

он пытается разворачивать tabControlller и использовать его. Но до этого момента tabControlller не может быть инициализирован ни одному объекту и поэтому он содержит нуль. Поэтому при распаковке nil приложение падает.

Вот почему вы получаете fatal error: unexpectedly found nil while unwrapping an Optional value

UITabBar Рекомендуем также не может быть добавлен в верхней части контроллера. Вместо этого вы можете создать собственный элемент управления, используя UISegmentedControl или UIToolBar.

0

В дополнение к ответу @ PGDev, чтобы получить доступ к необязательному значению (если он есть вообще), вам необходимо развернуть его. Необязательное значение может быть развернуто безопасно или принудительно. Если вы принудительно развернете опцию, и она не имеет значения, ваша программа выйдет из строя с указанным выше сообщением. Source. Вы не должны явно принудительно разворачивать опцию с помощью оператора !. Могут быть случаи, когда использование ! является приемлемым, но вы должны использовать его только тогда, когда вы на 100% уверены, что необязательный параметр содержит значение.

Кроме того, UITabBar всегда отображается по нижнему краю экрана и отображает содержимое одного или нескольких объектов UITabBarItem. Но я нашел некоторые связанные ответы, которые могут помочь в том, как позиционировать UITabBar сверху. См. Ссылки ниже.

Надеется, что это помогает!

Смежные вопросы