2013-02-14 15 views
8

Sto cercando di integrare PKRevealController in un mio progetto esistente.iOS Integrare PKRevealController con Storyboard e layout automatico

https://github.com/pkluz/PKRevealController

Come faccio a impostare il mio regolatore di sinistra vista, controller della vista a destra, e controller della vista anteriore, se sto usando storyboard? Il readme dice di fare ...

PKRevealController *revealController = [PKRevealController revealControllerWithFrontViewController:frontVC leftViewController:leftVC options:options]; 

self.window.rootViewController = revealController; 

Dove inserire queste righe di codice nel mio progetto di storyboard esistente? O ci sono alternative per impostare questo?

Grazie!

+3

Ho risposto a una domanda simile qui: [Uso di pkRevealController sullo storyboard Xcode esistente] (http://stackoverflow.com/questions/14824959/using-pkrevealcontroller-on-existing-xcode-storyboard/14825615#14825615) – rdelmar

risposta

2

Basta impostare il tipo di controller della destinazione successiva su PKRevealController e impostare l'ID dello storyboard per il controller di visualizzazione anteriore, sinistro e destro.

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 

    if ([segue.identifier isEqualToString:@"ToMain"]) { 

    PKRevealController* prc = segue.destinationViewController; 

    prc.frontViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"FrontViewController"]; 
    prc.leftViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"LeftViewController"]; 
    prc.rightViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"RightViewController"]; 

    } 
} 
+0

I don capisco. Significa che dovrei creare il punto di ingresso 'PKRevealController' nel mio storyboard? Non posso semplicemente richiamare PKRevealController dal gestore di clic del pulsante della barra delle schede? – expert

+0

Anche 'leftViewController' è una proprietà di sola lettura nel mio caso. – expert

+1

Vale la pena notare che questo non funziona.Puoi impostare il controller della vista in IB per avere una classe di 'PKRevealController', ma quando accade il seguito, lo schermo è vuoto, solo un grigio traslucido. – barndog

2

So che questo è un vecchio thread, ma sto andando fuori qui in ogni modo :)

Per rendere PKRevealController lavoro con storyboard fondamentalmente avrete bisogno di tre controller di vista.

  1. BaseController (ho chiamato così), che vengono estese dal PKRevealController come sta andando ad agire come base per il controller di contenuto principale e il controller di navigazione.

  2. MainController, che vengono impostati come fronViewController.

  3. NaviController, che utilizziamo fondamentalmente come leftViewController, ovvero menu di navigazione.

FYI: È possibile progettare e codificare MainController e NaviController dallo stroyboard.

Quindi questo è come lo facciamo; Per prima cosa dobbiamo estendere il nostro BaseController con PKRevealController in questo modo;

@interface MainController : PKRevealController 

In secondo luogo, sempre in BaseController, aggiungere questa riga al metodo viewDidLoad;

//init the fonrViewController 
UIViewController *homeController = [self.storyboard instantiateViewControllerWithIdentifier:@"homeScreen"]; 
//init the leftViewController 
UIViewController *naviContrlller = [self.storyboard instantiateViewControllerWithIdentifier:@"quickNaviScreen"]; 

[self setFrontViewController:homeController]; 
[self setLeftViewController:naviContrlller]; 

Quindi impostare il delegato PKRevealController come;

self.delegate = self; 

E questo è tutto.

+0

Grazie funziona! Ma come possiamo mostrare/nascondere il menu a sinistra oa destra senza scorrere dal vc anteriore? plz –

Problemi correlati