2010-04-13 19 views

risposta

10

Sfortunatamente, è un metodo non documentato (cioè API privata).

[splitViewController setHidesMasterViewInPortrait:NO]; 

penso che è necessario creare un controller visualizzazione personalizzata che contiene una vista tabella (come controller master) e un altro visualizzazione secondaria generico (come il controller particolare) per simulare questo.

+0

non documentato o privato API? Questa è una domanda importante quando si tratta di Apple ;-) –

+1

@paull: Non documentato == Privato. – kennytm

+3

Anche se, ricorda: a volte Apple "undocuments" un'opzione perché vogliono essere gli unici a usare quell'effetto. In tal caso, molte volte DEVONO allontanare le app che SEMPLIFICANO le API private con modifiche. Ciò è avvenuto quando "mi sono avvicinato troppo all'aspetto e alla sensibilità" della funzione "modifica" del controller di barra delle schede "ALTRO". Limitano le icone che puoi sistemare a 16. Ho provato ad implementare qualcosa che sembrava ...e mi hanno rifiutato dicendo che avrebbe potuto confondere gli utenti se il mio funzionasse in modo simile, ma non lo stesso (cioè: il mio ha fatto un po 'di più .. ha permesso più di 16). – Jann

4

alcune persone mi hanno chiesto la stessa domanda sul nostro blog e ho trovato una soluzione per questo. Lo troverai alla fine del mio post sul blog Your first split view controller | Seaside.

In generale, tutto ciò che dovete fare è di creare una sottoclasse di UISplitViewController e l'override del metodo willAnimateRotationToInterfaceOrientation: duration: e regolare le vostre opinioni principali e di dettaglio quando l'orientamento di interfaccia cambierà in modalità verticale.

Cheers, Andreas

+0

hi anka, ho visto un esempio di codice sorgente di molti dettagli, ma non hai implementato il metodo di didselect in root view ... puoi darmi un campione anche per quello .. –

+0

Ciao, ho aggiunto un codice di esempio per questo al mio progetto MasterDetail. Controlla il repository git su http://github.com/anka/bw_examples/tree/master//MasterDetail/. Saluti, Andreas – anka

+0

sembra promettente, ottima idea a proposito. – bentford

8

Il modo più semplice per ottenere l'effetto desiderato può essere quello di non solo usare un UISplitView. Invece, crea semplicemente una vista normale, metti una vista tabella sul lato sinistro, la vista dettagli sul lato destro, quindi imposta le cose di autosizing in modo appropriato in modo che tutto sia a posto sia in verticale che in orizzontale.

11

Si dovrebbe assolutamente dare un'occhiata a MGSplitViewController di Matt Gemmell.

MGSplitViewController è un sostituto open source per UISplitViewController, con vari miglioramenti utili.

49

Questa è la magia è necessario:

Questo metodo è in UISplitViewControllerDelegate, disponibile su iOS 5,0

- (BOOL)splitViewController: (UISplitViewController*)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0); 
{ 
    return NO; 
} 
+9

Questo è obsoleto in iOS 8. Usa la proprietà "preferredDisplayMode" impostata su "UISplitViewControllerDisplayModeAllVisible" per iOS 8 e versioni successive. – LightningStryk

5

Dal shouldHideViewController è deprecato in iOS 8, è necessario utilizzare questo invece (Swift):

splitViewController.preferredDisplayMode = UISplitViewControllerDisplayMode.AllVisible 
4

come ccwasden affermato, shouldHideViewController è deprecato a partire da iOS 8. In Objective-C, usare ...

splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModeAllVisible; 
1

In Swift:

splitViewController.preferredDisplayMode = .AllVisible

Problemi correlati