从头开始在ios中滑出导航面板

时间:2015-02-09 11:01:22

标签: ios objective-c amslidemenu mfslidemenu

我想使用segue为双方(左侧和右侧)构建一个“滑出导航”面板。在这种情况下我必须遵循的一些事情。左边&右侧菜单表必须位于UIViewController(不在UITableViewController)&所有viewController都在UINavigationController(嵌入式)中导航。

我已经尝试了很多例子,但所有这些例子都是由UITableViewController完成的。因为我无法根据我的设计自定义我的左侧或右侧菜单表。

如果有人可以给我一些参考或类似的教程,那将是非常值得注意的。

非常感谢先进。祝你有个美好的一天。

2 个答案:

答案 0 :(得分:5)

您可以使用MMDrawcontroller并使用NavigationController传递LeftView,RightView和Centerview。所有三个控制器都是UIViewController。您还可以使用与CenterView相同的NavigationController添加左视图和右视图,以便您可以从左视图和右视图进行推送。

CenterVC *objCenter = [[CenterVC alloc] initWithNibName:@"CenterVC" bundle:nil];
LeftVC *objleftVC = [[LeftVC alloc] initWithNibName:@"LeftVC" bundle:nil];
RightVC *objrightVC = [[RightVC alloc] initWithNibName:@"RightVC" bundle:nil];

/*--- Init navigation for Center Controller ---*/
UINavigationController *_navC = [[UINavigationController alloc] initWithRootViewController:objCenter];
_navC.navigationBarHidden = YES;
_navC.navigationBar.translucent = NO;
MMDrawerController *drawerController = [[MMDrawerController alloc]
                                        initWithCenterViewController:_navC
                                        leftDrawerViewController:objleftVC
                                        rightDrawerViewController:objrightVC];
[drawerController setShowsShadow:NO];
[drawerController setRestorationIdentifier:@"MMDrawer"];
[drawerController setMaximumLeftDrawerWidth:[[UIScreen mainScreen] bounds].size.width-45.0];
[drawerController setMaximumRightDrawerWidth:[[UIScreen mainScreen] bounds].size.width-45.0];
[drawerController setOpenDrawerGestureModeMask:MMOpenDrawerGestureModeAll];
[drawerController setCloseDrawerGestureModeMask:MMCloseDrawerGestureModeAll];
[drawerController setShouldStretchDrawer:NO];

[drawerController
 setDrawerVisualStateBlock:^(MMDrawerController *drawerController, MMDrawerSide drawerSide, CGFloat percentVisible) {
     MMDrawerControllerDrawerVisualStateBlock block;
     block = [[MMExampleDrawerVisualStateManager sharedManager]
              drawerVisualStateBlockForDrawerSide:drawerSide];
     if(block){
         block(drawerController, drawerSide, percentVisible);
     }
 }];


[self.navigationController pushViewController:drawerController animated:isAnimate];

使用故事板下载(https://github.com/TomSwift/MMDrawerController-Storyboard)。添加MMDrawerController+Storyboard,然后替换或检查上面演示中使用的Storyboard,并根据演示在AppDelegate中添加代码。

因此,您的演示项目将如下图所示

enter image description here

答案 1 :(得分:1)

试试SWRevealViewController。我认为这可能符合您的所有要求。它有详细记录,所以这里没有必要说太多。