IOS学习(十八)简单slideMenu

来源:互联网 发布:美团众包抢单软件 编辑:程序博客网 时间:2024/05/21 18:32

#import "MainViewController.h"#import "FirstViewController.h"#import "SecondViewController.h"#import "MenuViewController.h"@interface MainViewController ()<MenuViewDelegate>@property(nonatomic, strong) NSArray *viewControllers;@property(nonatomic, weak) UIViewController *contentViewController;- (void) addMenu;- (void) addViewControllers;@end@implementation MainViewController- (void)viewDidLoad {    [super viewDidLoad];    self.view.backgroundColor = [UIColor grayColor];            [self addMenu];    [self addViewControllers];        }- (void)addMenu{    MenuViewController *menu = [[MenuViewController alloc] init];    menu.delegate = self;    [self addChildViewController:menu];    [self.view addSubview:menu.view];}- (void)addViewControllers{    FirstViewController *first = [[FirstViewController alloc] init];    UINavigationController *navgFirst = [[UINavigationController alloc] initWithRootViewController:first];        SecondViewController *second = [[SecondViewController alloc] init];    UINavigationController *navgSecond = [[UINavigationController alloc] initWithRootViewController:second];        [self setViewControllers:@[navgFirst, navgSecond]];    [self setContentViewController:navgFirst];}- (void)setContentViewController:(UIViewController *)contentViewController{    [_contentViewController willMoveToParentViewController:nil];    [_contentViewController.view removeFromSuperview];    [_contentViewController removeFromParentViewController];        _contentViewController = contentViewController;    [self addChildViewController:_contentViewController];    [self.view addSubview:_contentViewController.view];}-(void) MenuView:(MenuViewController *)controller didSelecteIndex:(NSInteger)index{    NSLog(@"%@", [NSString stringWithFormat:@"%zd", index]);    [self setContentViewController:self.viewControllers[index - 1]];    [self openCloseMenu];}-(void)openCloseMenu{    if (!self.isOpen){        [UIView animateWithDuration:0.15 animations:^{                self.contentViewController.view.transform = CGAffineTransformMakeTranslation(140, 0);        }];    }else{        [UIView animateWithDuration:0.15 animations:^{            self.contentViewController.view.transform = CGAffineTransformIdentity;        }];    }        self.isOpen = !self.isOpen;}@end
@interface FirstViewController ()@end@implementation FirstViewController- (void)viewDidLoad {    [super viewDidLoad];    self.view.backgroundColor = [UIColor greenColor];    self.title = @"First";        UIBarButtonItem *barItem = [[UIBarButtonItem alloc] initWithTitle:@"菜单" style:UIBarButtonItemStylePlain target:self action:@selector(menuButtonClicked1)];        self.navigationItem.leftBarButtonItem = barItem;}- (void) menuButtonClicked1{    NSLog(@"menuButtonClicked1");    [self.navigationController.parentViewController performSelector:@selector(openCloseMenu)];    }@end

#import <UIKit/UIKit.h>@class MenuViewController;@protocol MenuViewDelegate <NSObject>-(void)MenuView:(MenuViewController *)controller didSelecteIndex:(NSInteger)index;@end@interface MenuViewController : UIViewController@property(nonatomic, weak) id<MenuViewDelegate> delegate;@end

#import "MenuViewController.h"@interface MenuViewController ()- (void) addItems;@end@implementation MenuViewController- (void)viewDidLoad {    [super viewDidLoad];    self.view.backgroundColor = [UIColor grayColor];        [self addItems];}- (void)addItems{    UIButton *item1 = [UIButton buttonWithType:UIButtonTypeCustom];    [item1 setTag:1];    [item1 setFrame:CGRectMake(0, 100, 140, 40)] ;    [item1 setTitle:@"Item1" forState:UIControlStateNormal];    [item1 setBackgroundColor:[UIColor greenColor]];    [item1 setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];    [self.view addSubview:item1];    [item1 addTarget:self action:@selector(itemselected:) forControlEvents:UIControlEventTouchUpInside];        UIButton *item2 = [UIButton buttonWithType:UIButtonTypeCustom];    [item2 setTag:2];    [item2 setFrame:CGRectMake(0, 140, 140, 40)] ;    [item2 setTitle:@"Item2" forState:UIControlStateNormal];    [item2 setBackgroundColor:[UIColor blueColor]];    [item2 setTitleColor:[UIColor yellowColor] forState:UIControlStateNormal];    [self.view addSubview:item2];        [item2 addTarget:self action:@selector(itemselected:) forControlEvents:UIControlEventTouchUpInside];}- (void) itemselected:(UIButton *)sender{    [self.delegate MenuView:self didSelecteIndex:sender.tag];}@end


0 0