IOS的滑动菜单(Sliding Menu)的详细写法(附代码)

滑动菜单是一个非常流行的IOS控件

先上效果图:

      

这里使用github的JTReveal框架来开发,链接是https://github.com/agassiyzh/JTRevealSidebarDemo/commit/ac03d9d7be4f1392020627e5fe8c22b972de4704

我们的ViewController要实现protocol JTRevealSidebarV2Delegate的两个optional方法

@optional
- (UIView *)viewForLeftSidebar;
- (UIView *)viewForRightSidebar;
- (UIView *)viewForLeftSidebar {
    CGRect mainFrame = [[UIScreen mainScreen] applicationFrame];
    UITableView *view = self.leftSidebarView;
    if ( ! view) {

        view = self.leftSidebarView = [[UITableView alloc] initWithFrame:CGRectMake(0, mainFrame.origin.y, 270, mainFrame.size.height) style:UITableViewStylePlain];

        view.dataSource = self;
        view.delegate   = self;
        view.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleHeight;
        view.backgroundColor = [UIColor whiteColor];

        UIView* rightHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 250, 42)];
        rightHeaderView.backgroundColor = [UIColor whiteColor];
        rightHeaderView.opaque = NO;

        UILabel* lable = [[UILabel alloc] initWithFrame:CGRectMake(90, 2, 100, 38)];
        [lable setText:@"left view"];
        UIFont* font = [UIFont systemFontOfSize:20];
        lable.font = font;
        [rightHeaderView addSubview:lable];

        UIView* lines = [[UIView alloc] initWithFrame:CGRectMake(0, 42, 300, 2)];
        lines.backgroundColor = [UIColor lightGrayColor];
        [rightHeaderView addSubview:lines];

        UIButton* button = [[UIButton alloc] initWithFrame:CGRectMake(213, 2, 53, 38)];
        [button setTitle:@"Edit" forState:UIControlStateNormal];
        [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
        [button addTarget:self action:@selector(leftButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
        [rightHeaderView addSubview:button];
        view.tableHeaderView = rightHeaderView;
    }

    return view;
}

在ViewController先初始化title

-(void) addTilteBar{
    UIBarButtonItem *back = [[UIBarButtonItem alloc] initWithTitle:@"左边" style:UIBarButtonItemStylePlain target:self action:@selector(showLeftSidebar:)];
    self.navigationItem.leftBarButtonItem = back;
    [back release];

    NSArray* array = [[NSArray alloc] initWithObjects:@"Left Tab",@"Right Tab",nil];
    UISegmentedControl* segment = [[UISegmentedControl alloc] initWithItems:array];
    CGRect rect = CGRectMake(80.0f, 8.0f, 170.0f, 30.0f);
    segment.frame = rect;
    segment.segmentedControlStyle = UISegmentedControlStyleBar;
    segment.selectedSegmentIndex = -1;
    [segment addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];
    self.navigationItem.titleView = segment;
    [segment release];

    UIBarButtonItem *mapButton = [[UIBarButtonItem alloc]
                                  initWithTitle:@"右边"
                                  style:UIBarButtonItemStyleBordered
                                  target:self
								  action:@selector(revealRightSidebar:)];

//       [button2 addTarget:self action:@selector(revealRightSidebar:) forControlEvents:UIControlEventTouchUpInside];
    self.navigationItem.rightBarButtonItem = mapButton;
    self.navigationItem.revealSidebarDelegate = self;

    [mapButton release];

点击左边的事件是

- (void)showLeftSidebar:(id)sender {

    JTRevealedState state = JTRevealedStateLeft;
    if (self.navigationController.revealedState == JTRevealedStateLeft) {
        state = JTRevealedStateNo;
    }
    [self.navigationController setRevealedState:state];
}

界面中这些tableview的Delegate和dataSource共用一个

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if (tableView == self.rightSidebarView) {
        return [RightArray count];
    }else if(tableView == self.leftSidebarView) {
        return [leftArray count];
    }else{
         return [names count];
    }
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (tableView == self.rightSidebarView) {
        static NSString *CellIdentifier = @"rightcell";

        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil) {
            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
        }

        // Configure the cell...
        NSUInteger row = [indexPath row];
       // NSUInteger section = [indexPath section];
       // cell.textLabel.textAlignment = UITextAlignmentCenter;
        cell.textLabel.textAlignment = NSTextAlignmentCenter;
        cell.textLabel.text = [RightArray objectAtIndex:row];
        return cell;
    } else if(tableView == self.leftSidebarView) {
        static NSString *CellIdentifier = @"left_cell";

        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil) {
            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
        }

        // Configure the cell...
        NSUInteger row = [indexPath row];
        // NSUInteger section = [indexPath section];
        // cell.textLabel.textAlignment = UITextAlignmentCenter;
        cell.textLabel.textAlignment = NSTextAlignmentCenter;
        cell.textLabel.text = [leftArray objectAtIndex:row];
        return cell;

    }else {
        static NSString *TableSampleIdentifier = @"TableSampleIdentifier";

//        UITableViewCell *cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:nil] autorelease];
        UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:TableSampleIdentifier];
        cell.textLabel.text = [names objectAtIndex:indexPath.row];

        return cell;
    }
}

代码可以在http://download.csdn.net/detail/baidu_nod/7541417下载

IOS的滑动菜单(Sliding Menu)的详细写法(附代码)

时间: 2024-11-08 07:47:04

IOS的滑动菜单(Sliding Menu)的详细写法(附代码)的相关文章

Python之简单的SMTP发送邮件详细教程附代码

  简介 Python发送邮件的教程本人在网站搜索的时候搜索出来了一大堆,但是都是说了一大堆原理然后就推出了实现代码,我测试用给出的代码进行发送邮件时都不成功,后面找了很久才找到原因,这都是没有一个详细的环境调试导致,所以今天特出一个详细的教程,一步一步从环境调试到代码实现整一个教程,希望对还在苦苦寻找解决方法却迟迟不能得到有效解决的人员一点帮助.   SMTP协议 首先了解SMTP(简单邮件传输协议),邮件传送代理程序使用SMTP协议来发送电邮到接收者的邮件服务器.SMTP协议只能用来发送邮件

Android 学习笔记之AndBase框架学习(七) SlidingMenu滑动菜单的实现

PS:努力的往前飞..再累也无所谓.. 学习内容: 1.使用SlidingMenu实现滑动菜单..   SlidingMenu滑动菜单..滑动菜单在绝大多数app中也是存在的..非常的实用..Github有位牛人将这个东西书写成了一个简单的框架..我们只需要通过引用相关的资源就能够完成一个滑动菜单的实现..有了这一层的基础..那么滑动菜单就很容易实现了..就拿我们最为熟悉的QQ来说吧..当我们进行滑动操作的时候..会有一个新的View去覆盖原本的View..我们可以通过触发新的视图上的控件来执行

Android UI(三)SlidingMenu实现滑动菜单(详细 官方)

Jeff Lee blog:   http://www.cnblogs.com/Alandre/  (泥沙砖瓦浆木匠),retain the url when reproduced ! Thanks 效果图: 求资源到首页上部加群即可. 一. SlidingMenu简介 github:https://github.com/jfeinstein10/SlidingMenu 官网上面的简介上翻译的: SlidingMenu是能让开发者很容易的开发有滑动菜单App(像Google+,YouTube,F

iOS style sliding menu

结果如下图所示: <html> <head> <script type='text/javascript' charset='utf-8' src='jquery-1.8.3.js'></script> <style type="text/css"> @import url(http://fonts.googleapis.com/css?family=Oxygen:400,700); /* Fonts */ @font-fac

Navigation Drawer详解-Google推出的用来取代Sliding Menu的控件(一

相信Sliding Menu很多人都用过,在Android和iOS的app中,越来越多的开发者都会把自己的菜单界面放在一个列表里,然后让用户通过向右(或者向左)滑动的操作看到应用所有的功能.Google官方的应用也基本都选择了这种交互方式,不同的是,Google使用的是Navigation Drawer,而我们大部分用的还是Sliding Menu. 大家对Sliding Menu这个开源项目可能已经很熟悉了,但是Navigation Drawer我们有些童鞋可能了解的还比较少,它是Google

Android双向滑动菜单完全解析,教你如何一分钟实现双向滑动特效

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9671609 记得在很早之前,我写了一篇关于Android滑动菜单的文章,其中有一个朋友在评论中留言,希望我可以帮他将这个滑动菜单改成双向滑动的方式.当时也没想花太多时间,简单修改了一下就发给了他,结果没想到后来却有一大批的朋友都来问我要这份双向滑动菜单的代码.由于这份代码写得很不用心,我发了部分朋友之后实在不忍心继续发下去了,于是决定专门写一篇文章来介绍更好的Android双向滑

【转】Android双向滑动菜单完全解析,教你如何一分钟实现双向滑动特效

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9671609 记得在很早之前,我写了一篇关于Android滑动菜单的文章,其中有一个朋友在评论中留言,希望我可以帮他将这个滑动菜单改成双向滑动的方式.当时也没想花太多时间,简单修改了一下就发给了他,结果没想到后来却有一大批的朋友都来问我要这份双向滑动菜单的代码.由于这份代码写得很不用心,我发了部分朋友之后实在不忍心继续发下去了,于是决定专门写一篇文章来介绍更好的Android双向滑

Android滑动菜单框架完全解析,教你如何一分钟实现滑动菜单特效

本文首发于CSDN博客,转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/8744400 之前我向大家介绍了史上最简单的滑动菜单的实现方式,相信大家都还记得.如果忘记了其中的实现原理或者还没看过的朋友,请先去看一遍之前的文章 Android滑动菜单特效实现,仿人人客户端侧滑效果,史上最简单的侧滑实现 ,因为我们今天要实现的滑动菜单框架也是基于同样的原理的. 之前的文章中在最后也提到了,如果是你的应用程序中有很多个Activity都需

Android 3D滑动菜单完全解析,实现推拉门式的立体特效

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/10471245 在上一篇文章中,我们学习了Camera的基本用法,并借助它们编写了一个例子,实现了类似于API Demos里的图片中轴旋转功能.不过那个例子的核心代码是来自于API Demos中带有的Rotate3dAnimation这个类,是它帮助我们完成了所有的三维旋转操作,所有Matrix和Camera相关的代码也是封装在这个类中. 这样说来的话,大家心里会不会痒痒的呢?虽然