感谢控件作者:https://github.com/SocialObjects-Software/AMSlideMenu

首先上效果图:

这里我们使用AMSlideMenu来实现左右侧滑菜单的效果。控件支持单独左侧滑、单独右侧滑和左右侧滑。同时支持Storyboard和xib两种开发模式。这里介绍第二种,在xib中的开发。
开发步骤如下:
1.    在Podfile中添加:pod "AMSlideMenu", "~> 1.5.3",通过pod install导入项目。
2.    在Pods项目中(注意:不是你自己的项目),在Pods-*.pch文件中添加如下一行代码:

// 必须,否则xib方式会报错
#define AMSlideMenuWithoutStoryboards

3.    实现一个继承了AMSlideMenuMainViewController类的ViewController。主要代码如下:

- (void)viewDidLoad
{
/*******************************
* 初始化菜单
*******************************/
self.leftMenu = [[LeftMenuTVC alloc] initWithNibName:@"LeftMenuTVC" bundle:nil];
self.rightMenu = [[RightMenuTVC alloc] initWithNibName:@"RightMenuTVC" bundle:nil];
/*******************************
* 结束初始化
*******************************/ [super viewDidLoad];
// Do any additional setup after loading the view.
} // 设置左侧菜单按钮样式(右侧按钮类似操作)
- (void)configureLeftMenuButton:(UIButton *)button
{
CGRect frame = button.frame;
frame.origin = (CGPoint){,};
frame.size = (CGSize){,};
button.frame = frame; [button setImage:[UIImage imageNamed:@"icon-menu.png"] forState:UIControlStateNormal];
}

4.    实现一个继承了AMSlideMenuLeftTableViewController的UITableViewController的类作为左侧菜单(右侧菜单类似)
主要代码如下:

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib. // 初始化菜单项
self.tableData = [@[@"VC 1",@"VC 2",@"VC 3"] mutableCopy];
} // 点击菜单项跳转到不同的VC
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UINavigationController *nvc;
UIViewController *rootVC;
switch (indexPath.row) {
case :
{
rootVC = [[FirstVC alloc] initWithNibName:@"FirstVC" bundle:nil];
}
break;
case :
{
rootVC = [[SecondVC alloc] initWithNibName:@"SecondVC" bundle:nil];
}
break;
case :
{
rootVC = [[ThirdVC alloc] initWithNibName:@"ThirdVC" bundle:nil];
}
break; default:
break;
}
nvc = [[UINavigationController alloc] initWithRootViewController:rootVC]; [self openContentNavigationController:nvc];
}

5.    最后记得在AppDelegate中要做这步操作(当然,其它地方也可以):

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
MainVC *mainVC = [[MainVC alloc] init]; UINavigationController *startNVC = [[UINavigationController alloc] initWithRootViewController:mainVC]; self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.window.rootViewController = startNVC;
[self.window makeKeyAndVisible]; return YES;
}

有不明白的地方可以直接下载源码。源码地址:http://files.cnblogs.com/ilovewindy/AMSlideMenu.zip

最新文章

  1. CentOS 6.3下 安装 Mono 3.2 和Jexus 5.4
  2. C# BS消息推送 负载均衡-SignalR&Redis的配置(三)
  3. GO语言面向对象
  4. union和union all用法
  5. gulp监听文件变化,并拷贝到指定目录
  6. SourceInsight
  7. JDK源码调试
  8. 关于RadAsm中GetEnvironmentStrings的BUG。
  9. NOSQL之【redis的主从复制】
  10. AppDomain.CurrentDomain.GetAssemblies()
  11. 【linux】UBUNTU 12.04下傻瓜式简单安装arm-linux-gcc等gnu arm toolchain交叉编译工具
  12. DLNA它 Error, can't findlibavformat ! 解
  13. UVA 562 Dividing coins (01背包)
  14. LDA工程实践之算法篇之(一)算法实现正确性验证(转)
  15. 解除织梦dedeCMS标题/关键词/ 简略标题长度限制听语音
  16. Android 如何监听输入法关闭事件
  17. php lcg_value与mt_rand生成0~1随机小数的效果比较
  18. 消除element.style { }
  19. 用ethtool 命令解决Linux 网卡丢包【转】
  20. Java编程的逻辑 (94) - 组合式异步编程

热门文章

  1. Codeforces 771C
  2. 1、Web MVC简介
  3. UNIX环境高级编程--1
  4. RabbitMQ~说说Exchange的几种模式
  5. Excel文件导入导出
  6. 【转】 Java 集合系列07之 Stack详细介绍(源码解析)和使用示例
  7. Win32双缓冲讲解
  8. linux 安装 mongo
  9. JS高级——面向对象方式解决歌曲管理问题
  10. JS——祝愿墙