【问题标题】:Slide-Out Navigation Panel in ios from scratchios中的滑出式导航面板从头开始
【发布时间】:2015-04-09 02:23:48
【问题描述】:

我想使用segue 为两侧(左侧和右侧)构建一个滑出式导航面板。在这种情况下,我必须遵循一些事情。左侧和右侧菜单表必须在 UIViewController 中(而不是在 UITableViewController 中)并且所有 viewController 都通过 UINavigationController 导航(嵌入)。

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

如果有人能给我一些参考或类似的教程,那将非常感激。

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

【问题讨论】:

    标签: ios objective-c amslidemenu mfslidemenu


    【解决方案1】:

    您可以使用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];
    

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

    所以您的演示项目将如下图所示

    【讨论】:

    • 感谢您的评论。但是我从这里下载的 zip 文件没有任何情节提要文件。 :(我有点慢。希望你不介意。:)
    • @Tulon 试试这个 (github.com/TomSwift/MMDrawerController-Storyboard) 也许这会对你有所帮助。
    • 非常感谢。在我看来这很棒,但你最后提供给我的 git 我无法让它在我的设备上运行。因为clang: error: linker command failed with exit code 1 (use -v to see invocation) 错误。
    • @Tulon 创建新项目。将默认情节提要替换为 MainStoryboard_iPhone。添加 MMDraw 类或 POD。并在 AppDelegate 中添加代码。同时添加MMDrawerController+Storyboard
    • 我在这里没有看到任何MMDrawerController+StoryboardMMDraw classes >> 你的意思是MMDrawerController??您有关于此的示例文档吗?我认为这是我可以在我的项目中使用的唯一一个。非常感谢拉马尼
    【解决方案2】:

    试试SWRevealViewController。我认为这可能满足您的所有要求。它有据可查,所以这里不需要多说。

    【讨论】:

    • 我已经尝试过了。它只有用于 Storyboard 的“RevealControllerStoryboardExample2”,它们仅与 UITableViewController 一起使用左侧菜单。但我需要左右侧菜单,tableView 将嵌入UIViewController
    猜你喜欢
    • 1970-01-01
    • 2015-04-11
    • 1970-01-01
    • 1970-01-01
    • 2015-11-10
    • 1970-01-01
    • 2013-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多