使用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

- (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主页面

- (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抽屉页面

- (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); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具