2016-05-11 7 views
0

Ich füge der Navigationsleiste für eine UIViewController-Unterklasse für iPad eine Done-Schaltfläche im Code hinzu, genauer gesagt für die Regular Size-Klasse Code. Wir unterstützen iOS 8+. Die if-Anweisung gibt die kompakte Größenklasse zurück, wenn sie auf dem iPad Air 2 mit iOS 8.1 ausgeführt wird, und sie meldet Regular für iOS 8.4 oder iOS 9. Ist das ein Fehler in iOS oder mache ich etwas falsch?TraitCollection.horizontalSizeClass-Berichte Compact unter iOS 8.1, Regular unter iOS 8.4 und 9.x

/// Add 'Done' button for iPad/Regular Size Class 
private func addDoneButtonIfNeeded() { 
    if traitCollection.horizontalSizeClass == .Regular { 
     let doneButton = UIBarButtonItem(barButtonSystemItem: .Done, target: self, action: #selector(ApprovalDetailViewController.doneAction)) 
     doneButton.tintColor = UIColor.whiteColor() 
     navigationItem.leftBarButtonItem = doneButton 
    } 
} 

LLDB ausgegeben, wenn Stützpunkt auf der gesetzte if-Anweisung

iOS 8.1: po traitCollection.horizontalSizeClass.rawValue -> 1 
iOS 8.4: po traitCollection.horizontalSizeClass.rawValue -> 2 

Ich verwende Seite Blatt modal Präsentation auf dem 'iPad'.

Antwort

1

ich beschlossen dies die Bedingung wie folgt anzupassen:

presentingViewController?.traitCollection.horizontalSizeClass == .Regular