2016-09-14 5 views
-1

Ich versuche, eine Tab-Leiste oben auf meiner google map jedoch hinzufügen, wenn ich diesen Code Xcode immer laufen stürzt und sage mir „fatale Fehler: unerwartet gefunden Null, während einen optionalen Wert auspackt“Wie füge ich eine Tableiste oberhalb meiner Google Map hinzu?

Hier ist mein Code:

@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 


} 

ich bin ziemlich sicher, dass der Fehler aus dem view.insertSubview (tabControlller, aboveSubview: mapView) kommt aber ich bin nicht sicher, wie das Tabbar auf meinem google map hinzufügen? Mache ich das programmatisch oder über IB?

Danke für Ihre Hilfe!

Antwort

0

Der Fehler, den Sie bekommen, weil das Abwickeln eine optionale Variable, die Null enthält.

In Ihrem Code tabControlller ist optional.

Wenn Sie verwenden es in:

view.insertSubview(tabControlller, aboveSubview: mapView)

es tabControlller und es zu auszupacken versucht zu verwenden. Aber bis zu diesem Punkt tabControlller möglicherweise nicht zu einem Objekt initialisiert und so enthält es Null. Wenn Sie also nil auspacken, stürzt die App ab.

, warum Sie bekommen fatal error: unexpectedly found nil while unwrapping an Optional value

Auch UITabBar kann nicht auf die Oberseite des Controllers hinzugefügt werden. Stattdessen können Sie ein benutzerdefiniertes Steuerelement mit UISegmentedControl oder UIToolBar erstellen.

0

Neben der Antwort von @ PGDev müssen Sie, um auf den Wert eines optionalen Wertes zugreifen zu können (falls überhaupt), diesen entpacken. Ein optionaler Wert kann sicher oder gewaltsam ausgepackt werden. Wenn Sie ein optionales erzwingen-Entpacken, und es hatte keinen Wert, wird Ihr Programm mit der obigen Nachricht abstürzen. Source. Sie sollten niemals explizit ein optionales mit dem ! Operator auspacken. Es kann Fälle geben, in denen die Verwendung von ! akzeptabel ist - aber Sie sollten es nur verwenden, wenn Sie 100% sicher sind, dass das optionale einen Wert enthält.

Außerdem erscheinen immer UITabBar am unteren Rand des Bildschirms und zeigen den Inhalt eines oder mehrerer UITabBarItem Objekte. Aber ich fand einige verwandte Antworten, die helfen können, wie man die UITabBar oben aufstellt. Siehe die folgenden Links.

hoffe, das hilft!

Verwandte Themen