iOS: SWRevealViewController revealToggle 已被调用但什么都不做
iOS: SWRevealViewController revealToggle is been call but doesn't do nothing
我正在尝试在这种情况下实施 SWRevealViewController:
来自我的主要 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];
}
来自我的绿色视图控制器:
-(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];
}
已调用 revealToggle 操作,但未执行任何操作。它不会加载后视控制器。你们中有谁知道发生这种情况或我做错了什么吗?
您正在创建 SWRevealViewController 的新实例。
我认为如果您将 self.reveal
设置为 self.revealViewController
它会起作用。
您需要设置 SWRevealViewController 为初始视图控制器。
假设您从右侧显示侧边栏菜单。
首先将你的第一个视图控制器嵌入到导航控制器,然后在你的第一个视图控制器viewdidload()
或viewDidAppear
方法中添加下面提到的代码,即
//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];
这将导航到控制器,即绿色视图控制器。
然后在你的绿色视图控制器 viewdidload()
或 viewDidAppear
方法中添加下面提到的代码,即
//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];
注意:有关更多详细信息,请查看下面提到的 link
http://www.appcoda.com/ios-programming-sidebar-navigation-menu/
我正在尝试在这种情况下实施 SWRevealViewController:
-(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];
}
来自我的绿色视图控制器:
-(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];
}
已调用 revealToggle 操作,但未执行任何操作。它不会加载后视控制器。你们中有谁知道发生这种情况或我做错了什么吗?
您正在创建 SWRevealViewController 的新实例。
我认为如果您将 self.reveal
设置为 self.revealViewController
它会起作用。
您需要设置 SWRevealViewController 为初始视图控制器。
假设您从右侧显示侧边栏菜单。
首先将你的第一个视图控制器嵌入到导航控制器,然后在你的第一个视图控制器viewdidload()
或viewDidAppear
方法中添加下面提到的代码,即
//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];
这将导航到控制器,即绿色视图控制器。
然后在你的绿色视图控制器 viewdidload()
或 viewDidAppear
方法中添加下面提到的代码,即
//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];
注意:有关更多详细信息,请查看下面提到的 link
http://www.appcoda.com/ios-programming-sidebar-navigation-menu/