控制器抽屜側(cè)滑,左中右三個(gè)控制器,這里使用上面提到的MMDrawerController框架。

1、首先創(chuàng)建三個(gè)控制器為center、left、right,創(chuàng)建完成之后,我們來到我們的AppDelegate,開始編寫我們的代碼了
1.1多話不說,先導(dǎo)入頭文件,并且添加一個(gè)MMDrawerController的屬性
//為MMDrawerController框架中
? #import "MMDrawerController.h"
? #import "UIViewController+MMDrawerController.h"
? //為自己創(chuàng)建的三個(gè)控制器
? #import "LitterLCenterViewController.h"
? #import "LitterLLeftViewController.h"
? #import "LitterLRightViewController.h"
? @interface LitterLAppDelegate ()
? /**
? *? MMDrawerController屬性
? */
? @property(nonatomic,strong) MMDrawerController * drawerController;
? @end
1.2?上面的做完后,我們便要顯示我們的窗口到設(shè)備上,接下來來到這里
//1、初始化控制器
? ? UIViewController*leftVC = [[leftViewControlleralloc]init];
? ? UIViewController*rightVC = [[rightViewControlleralloc]init];
? ? //2、初始化導(dǎo)航控制器
? ? UINavigationController *leftNvaVC = [[UINavigationController alloc]initWithRootViewController:leftVC];
? ? UINavigationController *rightNvaVC = [[UINavigationController alloc]initWithRootViewController:rightVC];
? ? //3、使用MMDrawerController
? ? self.drawerController = [[MMDrawerController alloc]initWithCenterViewController:leftNvaVC leftDrawerViewController:rightNvaVC ];
? ? //4、設(shè)置打開/關(guān)閉抽屜的手勢(shì)
? ? self.drawerController.openDrawerGestureModeMask = MMOpenDrawerGestureModeAll;
? ? self.drawerController.closeDrawerGestureModeMask =MMCloseDrawerGestureModeAll;
? ? //5、設(shè)置左右兩邊抽屜顯示的多少
? ? self.drawerController.maximumLeftDrawerWidth = 200.0;
? ? self.drawerController.maximumRightDrawerWidth = 200.0;
?????ScrollViewController *scroll = [[ScrollViewController alloc]init];
? ? self.window.rootViewController = scroll;
? ? dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(8.0*NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
? ? ? ? //6、初始化窗口、設(shè)置根控制器、顯示窗口
? ? ? ? self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
? ? ? ? [self.window setRootViewController:self.drawerController];
? ? ? ? [self.window makeKeyAndVisible];
? ? });
2、完成上面后基本的抽屜效果就已經(jīng)實(shí)現(xiàn)了,在這里的話,我們將要實(shí)現(xiàn)導(dǎo)航欄上面的按鈕,以及一些效果。
2.1完成上面后,導(dǎo)航欄的點(diǎn)擊就能切換,那么我們就來實(shí)現(xiàn)一個(gè)效果吧(ViewController),所謂的彈簧效果,也就幾句代碼
????self.title = @"側(cè)滑";
? ? self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"menu"] style:UIBarButtonItemStylePlain target:self action:@selector(leftBtn)];
? ? //2、添加雙擊手勢(shì)
? ? UITapGestureRecognizer * doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTap:)];
? ? //2.1、雙擊
? ? [doubleTapsetNumberOfTapsRequired:2];
? ? [self.view addGestureRecognizer:doubleTap];
? ? //3、添加兩個(gè)手指雙擊手勢(shì)
? ? UITapGestureRecognizer* twoFingerDoubleTap = [[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(twoFingerDoubleTap:)];
? ? //3.1、雙擊
? ? [twoFingerDoubleTapsetNumberOfTapsRequired:2];
? ? //3.2、兩個(gè)手指? 默認(rèn)為一個(gè)
? ? [twoFingerDoubleTapsetNumberOfTouchesRequired:2];
? ? [self.viewaddGestureRecognizer:twoFingerDoubleTap];
2.2這里的話就是我們的方法,其實(shí)很簡單
-(void)leftBtn{
? ? //這里的話是通過遍歷循環(huán)拿到之前在AppDelegate中聲明的那個(gè)MMDrawerController屬性,然后判斷是否為打開狀態(tài),如果是就關(guān)閉,否就是打開(初略解釋,里面還有一些條件)
? ? [self.mm_drawerController toggleDrawerSide:MMDrawerSideLeft animated:YES completion:nil];
}
//添加點(diǎn)擊手勢(shì)? 一個(gè)手指雙擊
-(void)doubleTap:(UITapGestureRecognizer*)gesture{
? ? [self.mm_drawerController bouncePreviewForDrawerSide:MMDrawerSideLeft completion:nil];
}
//添加點(diǎn)擊手勢(shì)? 兩個(gè)個(gè)手指雙擊
-(void)twoFingerDoubleTap:(UITapGestureRecognizer*)gesture{
? ? [self.mm_drawerController bouncePreviewForDrawerSide:MMDrawerSideRight completion:nil];
}
3.在側(cè)滑頁面做一個(gè)表格,每個(gè)cell都是能跳轉(zhuǎn)一個(gè)界面
- (void)viewDidLoad {
? ? [super viewDidLoad];
? ? self.title=@"側(cè)滑頁面";
? ? UITableView *tableView = [[UITableView alloc]initWithFrame:self.view.frame style:UITableViewStylePlain];
? ? tableView.delegate=self;
? ? tableView.dataSource=self;
? ? [self.viewaddSubview:tableView];
? ? arr = @[@"1",@"2",@"3",@"4",@"5"];
}
-(NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section{
? ? return 5;
}
-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath{
? ? staticNSString*CellIdentifier =@"Cell";
? ? UITableViewCell*cell = [tableViewdequeueReusableCellWithIdentifier:CellIdentifier];
? ? if(!cell) {
? ? ? ? cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
? ? }
? ? cell.textLabel.text=arr[indexPath.row];
? ? returncell;
}
-(void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath{
? ? ViewController *vc = [[ViewController alloc]init];
? ? vc.title=arr[indexPath.row];
? ? //拿到我們的LitterLCenterViewController,讓它去push
? ? UINavigationController* nav = (UINavigationController*)self.mm_drawerController.centerViewController;
? ? [navpushViewController:vc animated:NO];
? ? //當(dāng)我們push成功之后,關(guān)閉我們的抽屜
? ? [self.mm_drawerController closeDrawerAnimated:YES completion:^(BOOL finished) {
? ? ? ? //設(shè)置打開抽屜模式為MMOpenDrawerGestureModeNone,也就是沒有任何效果。
? ? ? ? [self.mm_drawerController setOpenDrawerGestureModeMask:MMOpenDrawerGestureModeNone];
? ? }];
}