2017-05-11 2 views
2

Je suis en train de mettre en œuvre SWRevealViewController sur ce scénario:iOS: SWRevealViewController revealToggle est fait appel, mais ne fait rien

enter image description here De ma principale viewController:

-(void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:YES]; 
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
    SWRevealViewController *SWR = [storyboard instantiateViewControllerWithIdentifier:@"SWRevealViewController"]; 
    [self presentViewController:SWR animated:YES completion:nil]; 
} 

De mon contrôleur de vue vert :

-(void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:YES]; 
    self.reveal = [[SWRevealViewController alloc] init]; 
    self.reveal.delegate = self; 
    self.menu.target = self; 
    self.menu.action = @selector(revealToggleAction:); 
    [self.view addGestureRecognizer:self.reveal.panGestureRecognizer]; 
    NSLog(@"viewDidLoad"); 
} 

-(void)revealToggleAction:(id)sender 
{ 
    [self.reveal revealToggle:self]; 
} 

L'action revealToggle a été appelée mais ne fait rien. Il ne charge pas le contrôleur de vue arrière. L'un d'entre vous sait-il que cela arrive ou que je fais mal?

Répondre

2

En supposant que vous montrez le menu de la barre latérale de droite.

d'abord Intégrer votre premier contrôleur de vue de contrôleur de navigation, puis dans votre première vue méthode du contrôleur viewdidload() ou viewDidAppear ajouter Mentionnés ci-dessous le code à savoir

//this is your side menu view controller. 

UIViewController *sideMenuController = 
[self.storyboard instantiateViewControllerWithIdentifier:@"YourSideMenuIdentifier"]; 

//this is the navigation controller embed to your green view controller. 

UINavigationController *nc1 = 
(UINavigationController *)[self.storyboard instantiateViewControllerWithIdentifier:@"YourNavigationControllerIdentifier"]; 

//This is your reveal view Controller. 

SWRevealViewController *revealViewController = 
[[SWRevealViewController alloc]initWithRightViewController:sideMenuController frontViewController:nc1]; 
[self.navigationController pushViewController:revealViewController animated:YES]; 
[self.navigationController setNavigationBarHidden:YES]; 

Ce naviguera au contrôleur i.e. Green View Controller.

alors dans votre contrôleur de vue vert méthode viewdidload() ou viewDidAppear ajouter du code ci-dessous mentionné à savoir

//GreenViewController.h file 

@interface GreenViewController : UIViewController 
@property (weak, nonatomic) IBOutlet UIBarButtonItem *sideBarItem; 
@end 


//Your GreenViewController.m file 

_sideBarItem.target = self.revealViewController; 
_sideBarItem.action = @selector(rightRevealToggle:); 
SWRevealViewController *revealController = [self revealViewController]; 
[self.view addGestureRecognizer:revealController.panGestureRecognizer]; 

Note: Pour plus de détails, chèque lien mentionné ci-dessous

http://www.appcoda.com/ios-programming-sidebar-navigation-menu/

0

Vous créez une nouvelle instance de SWRevealViewController.

Je pense que si vous définissez le self.reveal à self.revealViewController cela fonctionnera.

1

Vous devez définir SWRevealViewController est le contrôleur de vue initial.