博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS分组通讯录效果+側滑菜单(MMDrawerController)
阅读量:5902 次
发布时间:2019-06-19

本文共 3891 字,大约阅读时间需要 12 分钟。

前言的废话…能够忽略

自从学会了使用Cocoapod,就欲罢不能了!由于太简单太赞了,不用再把源代码粘到project里了!
參见戴维营博客中的解说:
先上一下效果图,请原谅我手残录的效果不是非常理想,大致就是这个意思contacts

接下来上代码!

1.通讯录

通讯录基本的就是建立索引栏和section的关联,其次是初始化索引栏数据和每一个section的title.关于索引栏数据,假设写接口的小哥人好的话就会直接帮你返回ABCD…假设非常不幸,接口小哥不给你返回索引栏数据,那就得自己处理了!(处理方法兴许再补上,如今先假设接收到了索引栏数据)

(1.)私有成员

@property(nonatomic,strong)NSArray* bottomTableData; @property(nonatomic,strong)NSArray* indexData;

(2.)相关函数

//每一个section 的title- (UIView *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{    return [_indexData objectAtIndex:section];}//返回索引栏数据- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView{    return _indexData;}//建立索引栏和section的关联     - (NSInteger)tableView:(UITableView *)tableView             sectionForSectionIndexTitle:(NSString *)title                    atIndex:(NSInteger)index{  NSInteger section = [_indexData indexOfObject:title];  return section;}

2.側滑菜单

(1.)私有成员

@property (weak, nonatomic) IBOutlet UITableView *topTableView;//新的好友,我的粉丝,我的群@property (nonatomic,strong)BottomTableView* bottomTabelView;//下半部分的通讯录@property(nonatomic,strong)UILabel* groupNameLbl;@property(nonatomic,strong)NSArray* topTableData;@property(nonatomic,strong)NSArray* bottomTableData;@property(nonatomic,strong)NSArray* indexData;//索引数据,对接接口后依据返回的对应数据进行修改@property(nonatomic,strong)NSArray* leftMenuData;//側滑菜单

(2.)相关函数

1>.在viewDidLoad中初始化数据    2>.设置側滑菜单(使用MMDrawerController)!LeftSideDrawerViewController* leftMenuController = [[LeftSideDrawerViewController alloc] init];leftMenuController.imgData = @[@"allFriend",@"jiaren",@"pengyou",@"tongxue",@"weifenzu"];/**注意:每一个页面要用NavigationViewController包一下.我不是在主页面写的側滑菜单,而是在模态窗体里写的.这里的參数须要细致检查,非常easy出现错误,假设參数出现错误,界面效果会有问题的,详细的你能够自己试着修改一下,深刻的理解一下.我这里的self不过一个ViewController,所以须要NavigationViewController再包一层.*/self.drawController = [[MMDrawerController alloc] initWithCenterViewController:[[NavigationViewController alloc] initWithRootViewController:self] leftDrawerViewController:leftController];[_drawController setShowsShadow:NO];[_drawController setMaximumLeftDrawerWidth:kScreenWidth*4/5];[_drawController setOpenDrawerGestureModeMask:MMOpenDrawerGestureModeAll];[_drawController setCloseDrawerGestureModeMask:MMCloseDrawerGestureModeAll];_window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];UIColor * tintColor = [UIColor colorWithRed:29.0/255.0                                      green:173.0/255.0                                       blue:234.0/255.0                                      alpha:1.0];[_window setTintColor:tintColor];_window.rootViewController = _drawController;[_window makeKeyAndVisible];3>.初始化数据_topTableData = @[@[@"新的朋友(0)",@"qunmemberaction"],@[@"我的粉丝(0)",@"qunweiboaction"],@[@"我的群(0)",@"qunmemberaction"]];    _bottomTableData = @[@[@"啊1",@"啊2"],@[@"波波",@"菠菜"],@[@"赫赫"],@[@"校内外助手",@"新人",@"小人",@"昕人"]];_indexData = @[@"A",@"B",@"H",@"X"];_leftMenuData = @[@"所有好友(2)",@"家人(0)",@"朋友(0)",@"同学(0)",@"未分组(2)"];4>.选择左側菜单中某一项,側滑菜单关闭并刷新主页面的数据a.側滑菜单.m中- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{    ContactsViewController* contactController = [[ContactsViewController alloc] initWithNibName:@"ContactsViewController" bundle:nil];    self.leftDelegate = contactController;    [self.leftDelegate  passToContacts:[NSString  stringWithFormat:@"%ld",(long)indexPath.row]];    [self.mm_drawerController closeDrawerAnimated:YES completion:nil];}b.主页面.m中- (void)passToContacts:(NSString*)value{ //又一次请求好友通讯录,并刷新tableview  groupIndex = [value intValue];  [self viewDidLoad];}

3.从主页面返回上一级页面

//更改window的根视图控制器- (void)pressCancleBtn:(id)sender{    TabbarViewController* tabbarController =  [[TabbarViewController alloc]init];    tabbarController.selectedIndex = 4;self.window.rootViewController = tabbarController;    [self.window makeKeyAndVisible];}

最后的啰嗦

由于是菜鸟,所以希望大家多多提意见,共同进步!最后附代码地址:

转载于:https://www.cnblogs.com/clnchanpin/p/7110439.html

你可能感兴趣的文章
windows10 更新后要输入2次密码才能进入系统
查看>>
iOS开发-OpenGL ES入门教程1
查看>>
平衡二叉树(AVL树)
查看>>
面向对象思想(第一天)
查看>>
微信小程序 js逻辑
查看>>
linux 安装 sftp
查看>>
openStack queens
查看>>
C++中map用法详解《转》
查看>>
(转)EOSIO开发(四)- nodeos、keosd与cleos
查看>>
MVC5+EF6 入门完整教程八
查看>>
Java 设计模式专栏
查看>>
常用Mysql或者PostGresql或者Greenplum的语句总结。
查看>>
工控随笔_12_西门子_WinCC的VBS脚本_03_变量类型
查看>>
appium 报错
查看>>
phpquery中文手册
查看>>
微信nickname乱码(emoji)及mysql编码格式设置(utf8mb4)解决的过程
查看>>
【转】C++ 笔试面试题目
查看>>
同步和异步的区别
查看>>
[Leetcode] Search in Rotated Sorted Array
查看>>
委托、Lambda表达式、事件系列02,什么时候该用委托
查看>>