13

Nota: Problema risolto.Progetto SWRevealViewController in iOS

Ecco che arriva la storia. Sto usando RevealViewController nel mio progetto. Sono anche nascondere il navigationBars:

[self.navigationController setNavigationBarHidden]; 

Il mio progetto può essere visto nella foto qui sotto e il "MenuButton" messa in atto nella tabBarViewController.

enter image description here

Dal momento che l'navigationBar è nascosto a causa della mia interfaccia sembra, tutte le visualizzazioni a scheda (HomeViewController) non mostreranno il tasto MENU e il navigationBar come dovrebbe. Non sto usando panGestureRecognizer per attivare anche il menu.

Ciò significa che ho un problema per attivare il menu tramite un pulsante normale in HomeViewController. Il tasto MENU-evento è collocato in tabBarViewController.m:

_menuButton.target = self.revealViewController; 
_menuButton.action = @selector(revealToggle:); 

Così ho provato a chiamare un metodo da HomeViewController per sparare il pulsante in tabBarViewController come questo:

HomeViewController.m

- (IBAction) onMenuClicked: (id)sender{ 

tabBar = [[tabBarViewController alloc] init]; 
[tabBar setupMenu]: 
} 

tabBarViewController.m

-(void) setupMenu{ 

[_realMenuButton sendActionForControlEvents:UIControlEventTouchUpInside]; 
[_realMenuButton addTarget:self.revealViewController action:@selector(revealToggle:) UIControlEventTouchUpInside]; 
} 

In questo esempio ho tentato di eseguire il realeMenuButton e il normale UIButton. Ive ha anche provato come UIBarButtonItem solo per attivare il @selector (revealToggle :) Ma non succede nulla nell'app quando provo ad attivare il pulsante da HomeViewController.

Non so come farò questo lavoro. Altre idee o trucchi? Per favore sii specifico se così! Cordiali saluti

+0

Bene, hai provato a rendere il controller di visualizzazione iniziale non un SWRevealViewController? Quello che è successo? – JAL

+0

Sì. Il mio controller di visualizzazione iniziale è un TabBarController. Quando faccio clic sul pulsante del menu (nel controller della mia vista principale) non carica il controller della vista tabella. Semplicemente non succede niente. Ho seguito esattamente la guida e guardato i progetti di esempio. L'unica differenza è nel mio progetto che non sto usando la classe SWReveal come controller di visualizzazione iniziale. Quindi sto dando per scontato che questo sia il problema. – user1293618

risposta

4

Ho provato e dovrebbe funzionare normalmente. Anche se non è il controller della vista iniziale

7

Sì, funzionerà ancora. SWRevealViewController è solo una sottoclasse di un UIViewController, in modo da poter utilizzare in qualsiasi punto della app:

  1. Chiamando presentViewController:animated ad un certo punto.
  2. Utilizzando in una pila di navigazione ecc

Si noti che è possibile aggiungere gesti da SWRevealViewController ai suoi controller di vista dei contenuti, che alterano il comportamento di utilizzato in un controller della vista di navigazione, ma che c'è da aspettarselo e hai ancora il pieno controllo sul suo comportamento.

Modifica

La struttura dell'interfaccia utente della vostra applicazione non è ancora chiaro per me - sembra che si sta cercando di chiamare revealToggle in un'istanza di SWRevealViewController quando il VC in vista è infatti HomeViewController? Come funzionerebbe, quando SWVC non è nemmeno in vista?

La mia ipotesi migliore è che la struttura di interfaccia utente dovrebbe essere la seguente:

TabBarController ---> (root) UINavigationController ---> (root) SWRevealViewController.

Quindi, sul tuo SWRevealViewController, impostare HomeViewController come controller della vista anteriore e TableViewController come controller della vista destra o sinistra.

+0

Guarda la mia domanda modificata qui sopra! Cordiali saluti – user1293618

+0

@ user1293618, Modificata la risposta. –

+0

Ho risolto il mio problema grazie a questo: http://stackoverflow.com/questions/23614851/tabbarcontroller-with-swrevealviewcontroller?rq=1 Grazie per l'aiuto e il tempo! – user1293618

6

Intendi questo?

tabbar controller with menu button?

è possibile. è possibile impostare il pulsante del menu nel vostro tabBarController.m, in questo modo:

UIBarButtonItem *menu = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"menu.png"] style:UIBarButtonItemStylePlain target:revealController action:@selector(revealToggle:)]; 

self.navigationItem.leftBarButtonItem = menu; 
self.delegate = self; 

Per me, il mio controller vista iniziale è la schermata di login (ovviamente non ho bisogno di rivelare qualsiasi VC qui ...). quindi quando l'utente tocca il pulsante di accesso,

UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:yourRootVC]; 
LeftMenuViewController *leftMenuVC = [[LeftMenuViewController alloc]init]; 
SWRevealViewController *revealController = [[SWRevealViewController alloc]initWithRearViewController:leftMenuVC frontViewController:nav]; 
revealController.delegate = self; 
[self presentViewController:revealController animated:YES completion:nil]; 
+0

Guarda la mia domanda modificata qui sopra! Saluti – user1293618