2016-06-03 12 views
0

Ich möchte ein Layout wie Safari unterstützen, wo in horizontal reguläre Umgebungen Schaltflächen in der Navigationsleiste angezeigt werden, aber in horizontal kompakten Umgebungen befinden sich einige Schaltflächen in der Navigationsleiste und einige Schaltflächen auf der Symbolleiste. DieseReorganisation von Symbolleiste und Navigationsleiste nach TraitCollectionDidChange

ist, was ich habe in meinem traitCollectionDidChange

override func traitCollectionDidChange(previousTraitCollection: UITraitCollection?) { 

    let editingContextButton = editing ? resetButton : doneButton 

    if traitCollection.horizontalSizeClass == .Regular { 
     navigationController?.toolbarHidden = true 

     navigationItem.leftBarButtonItems = [editButtonItem(), helpButton] 
     navigationItem.rightBarButtonItems = [editingContextButton, addButton] 

    } else if traitCollection.horizontalSizeClass == .Compact{ 
     navigationController?. toolbarHidden = false 

     navigationItem.leftBarButtonItems = [editButtonItem()] 
     navigationItem.rightBarButtonItems = [editingContextButton] 
     navigationController?.toolbarItems = [helpButton, UIBarButtonItem(barButtonSystemItem: .FlexibleSpace, target: nil, action: nil), addButton] 
    } 
} 

Aber es scheint, dass es ein Problem ist, wenn von einer regulären horizontalen Größenklasse zu einem kompakten Übergang. Die Elemente in der Navigationsleiste sind immer korrekt, aber die Elemente der Symbolleiste sind abgeschnitten oder leer.

Wenn der ViewController aufgerufen wird, wird er immer korrekt eingerichtet und angezeigt. Er befindet sich immer in der Klasse mit der horizontalen regulären Größe - es gibt nur ein Problem, wenn die Größenklasse von regulär zu kompakt geändert wird.

Hier ist ein Beispiel, das die Schaltfläche zum Hinzufügen in der rechten unteren Ecke zeigt, die nach der Änderung der Größenklasse aus der Werkzeugleiste verschwindet.

enter image description here

Das gleiche passiert, wenn sie auf 5,5" iPhones das Gerät drehen und im Hochformat auf dem iPad, ist die Symbolleiste nur leer nach Multitasking aktiviert. Was hier das Problem? Vielen Dank!

Antwort

0

Ich erkennen, ., dass ich nicht Elemente der Symbolleiste richtig einstellen Statt

navigationController?.toolbarItems = [helpButton, UIBarButtonItem(barButtonSystemItem: .FlexibleSpace, target: nil, action: nil), addButton] 

ich hätte getan:

setToolbarItems([helpButton, UIBarButtonItem(barButtonSystemItem: .FlexibleSpace, target: nil, action: nil), addButton], animated: false)