使用PPRevealSideViewController创建抽屉式导航
PPRevealSideViewController 这是一个开源类;
使用:
1:创建一个PPRevealSideViewController,UINavigationController对象;
2: 设置 self.window.rootViewController = slideViewController;
注:要先在-Prefix.pch 预编译文件里面 加上 #import "PPRevealSideViewController.h"
3: 在主页面导航上加一个 UIBarButtonItem 并设置回调方法 enterLeftNavication;
4: 在回调方法里面,设置拉开左页面导航;
5: 在左导航页面里面,调用 [self.revealSideViewController popViewControllerAnimated:YES];回到主页面;
如代码:
appdelegate.m
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; // Override point for customization after application launch. self.window.backgroundColor = [UIColor whiteColor]; //1:创建一个PPRevealSideViewController,UINavigationController对象; //2: 设置 self.window.rootViewController = slideViewController; //注:要先在-Prefix.pch 预编译文件里面 加上 #import "PPRevealSideViewController.h" MainTableVC *mainVC = [[MainTableVC alloc]initWithStyle:UITableViewStylePlain]; UINavigationController *navVC = [[UINavigationController alloc]initWithRootViewController:mainVC]; PPRevealSideViewController *slideViewController = [[PPRevealSideViewController alloc]initWithRootViewController:navVC]; self.window.rootViewController = slideViewController; [mainVC release]; [navVC release]; [slideViewController release]; [self.window makeKeyAndVisible]; return YES; }
MainTableVC.m主页面
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
- (void)viewDidLoad { [super viewDidLoad]; //3: 在主页面导航上加一个 UIBarButtonItem 并设置回调方法 enterLeftNavication; //4: 在回调方法里面,设置拉开左页面导航; self.navigationItem.title = @"主页面"; UIBarButtonItem *leftBarBtn= [[UIBarButtonItem alloc]initWithTitle:@"左导航" style:UIBarButtonItemStyleBordered target:self action:@selector(enterLeftNavication)]; self.navigationItem.leftBarButtonItem = leftBarBtn; [leftBarBtn release]; } //左界面回调方法; - (void)enterLeftNavication { LeftTableVC *leftTableView = [[LeftTableVC alloc]initWithStyle:UITableViewStylePlain]; UINavigationController *leftNavVC = [[UINavigationController alloc]initWithRootViewController:leftTableView]; [self.revealSideViewController pushViewController:leftNavVC onDirection:PPRevealSideDirectionLeft animated:YES]; [leftNavVC release]; [leftTableView release]; }
LeftTableVC.m抽屉页面
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
- (void)viewDidLoad { [super viewDidLoad]; self.navigationItem.title = @"左页面"; } //5: 在左导航页面里面,调用 [self.revealSideViewController popViewControllerAnimated:YES];回到主页面; - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [self.revealSideViewController popViewControllerAnimated:YES]; NSLog(@" 左导航页面---》%d",indexPath.row); }