2016-02-16 12 views
6

Sto costruendo un'applicazione universale utilizzando UISplitViewController e il targeting per iOS 9 e versioni successive. La lingua dell'app è Objective-C.UISplitViewController mostra sempre la vista principale in modalità ritratto iPad iOS 9

Avendo iniziato con il modello Xcode Master/Dettagli e impostato le mie viste nel modo standard, mi sto rendendo conto che l'app sarà migliore se tengo sempre la schermata principale sullo schermo (su iPad), incluso quando il dispositivo è in modalità verticale. Tuttavia, non importa quanto sia difficile cercare, non riesco a trovare nulla che possa aiutarmi a capire come ottenere ciò. So che questo è stato precedentemente ottenuto utilizzando splitViewController: shouldHideViewController: inOrientation:

Tuttavia, questo metodo è deprecato in iOS 9 e non riesco a capire cosa lo sostituisce e perché. Ho esaminato i nuovi metodi delegati per UISplitViewController e li ho trovati completamente privi di qualsiasi livello di intuitività.

Apprezzerei molto alcuni suggerimenti in merito a ciò che sostituisce splitViewController: shouldHideViewController: inOrientation: e come può essere utilizzato per mantenere la vista principale visualizzata in qualsiasi momento sull'iPad.

risposta

10

sottoclasse UISplitViewController

Non c'è alcuna necessità di tenere traccia delle modifiche in particolare orientamento: principali e di dettaglio verranno comunque visualizzate in sequenza su iPhone in modalità verticale, e la maggior parte iPhone in modalità orizzontale.
preferredDisplayMode:.AllVisible ha effetto solo sulle modalità in cui entrambe le viste possono essere visibili contemporaneamente su.

Swift

class SplitViewController: UISplitViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     preferredDisplayMode = .AllVisible 
    } 
} 

Obj-C

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.preferredDisplayMode = UISplitViewControllerDisplayModeAllVisible; 

} 

iPad Ritratto & iPhone 6 Plus Paesaggio

enter image description here

+0

Superbo, grazie. Proveremo. Ma è davvero necessario sottoclasse solo per cambiare questo valore? Qualche idea sul perché il valore non può essere modificato sulla visualizzazione split vanilla? – beev

+0

Ho avuto la possibilità di provare questo ora. Funziona come un sogno. Non posso credere di aver passato così tanto tempo a provare a studiare il delegato della vista divisa e di non aver guardato correttamente i documenti per la vista divisa. Non è detto nei documenti che la sottoclasse sia necessaria, ma sembra essere il modo più efficiente per farlo, in quanto assicura che la vista divisa sia configurata prima di essere visualizzata. Grazie ancora! – beev

+1

Non è necessario sottoclasse: se si ha un puntatore a 'UISplitViewController', si può' aSplitViewController.preferredDisplayMode = .AllVisible'. Se la documentazione fosse esauriente, non ci sarebbe StackOverflow e non avrei i badge ... – SwiftArchitect