带有 StoryBoard 菜单项的 MMDrawerController

Posted

技术标签:

【中文标题】带有 StoryBoard 菜单项的 MMDrawerController【英文标题】:MMDrawerController with StoryBoard Menu Item 【发布时间】:2014-07-10 14:32:16 【问题描述】:

我正在使用MMdrawerController 在我的项目中练习侧抽屉控制器。但是当我点击左侧的菜单按钮,然后点击选择的行时,它打开得很好,但是相应的视图没有在视图的左侧显示菜单项(抽屉菜单按钮)。所以我无法做出任何进一步的选择。 我使用故事板。

来自MydrawerController的示例代码 我在抽屉的表格视图中浏览单元格。

#pragma mark - Table view delegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

    [self.delegate drawerMenuViewController:self didSelectMenuSection:indexPath.row];
       switch ((MMDrawerMenuViewControllerSection)indexPath.row) 
        case MMDrawerMenuViewControllerSectionProfile:

            [self.mm_drawerController setCenterViewController:[self.storyboard instantiateViewControllerWithIdentifier:@"MMProfileViewController"] withCloseAnimation:YES completion:nil];


            break;

        default:
            break;
    



我的中心观点只是做这些:

-(void)setupLeftMenuButton
    MMDrawerBarButtonItem *leftDrawerButton=[[MMDrawerBarButtonItem alloc]initWithTarget:self action:@selector(leftDrawerButtonPress:)];
    [self.navigationItem setLeftBarButtonItem:leftDrawerButton animated:YES];





- (void)didReceiveMemoryWarning

    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.


-(void)leftDrawerButtonPress:(id)sender
    [self.mm_drawerController toggleDrawerSide:MMDrawerSideLeft animated:YES completion:nil];


-(void)doubleTap:(UITapGestureRecognizer*)gesture
    [self.mm_drawerController bouncePreviewForDrawerSide:MMDrawerSideLeft completion:nil];

我的另一个无法显示菜单项的视图控制器具有上面给出的相同按钮处理程序。但仍然没有显示菜单项。

【问题讨论】:

【参考方案1】:

无法从侧视图将控制器推入 centerView,我已经这样做了但需要使用委托,我已经在左侧控制器中定义了一个协议,例如

@protocol LGSettingDrawerControllerDelegate <NSObject>

- (void)pushControllerWithIndex:(NSIndexPath*)indexPath;

@end

@property (nonatomic, weak) id<LGSettingDrawerControllerDelegate> delegate;

.m 文件

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

    [tableView deselectRowAtIndexPath:indexPath animated:YES];
    if (_delegate != nil) 
        [_delegate pushControllerWithIndex:indexPath];
    
    [self.menuContainerViewController setMenuState:MFSideMenuStateClosed];

这个委托方法确实像

一样在中心视图控制器上推送
[self.mm_drawerController setCenterViewController:[self.storyboard instantiateViewControllerWithIdentifier:@"MMProfileViewController"] withCloseAnimation:YES completion:nil];

【讨论】:

实际上我的问题是,MenuItem 没有显示在所选视图上。相反,抽屉侧菜单通过从左到右滑动视图可以正常工作。我有麻烦为什么它不显示 leftbarbutton 你能添加一张图片来更好地理解你的问题吗?

以上是关于带有 StoryBoard 菜单项的 MMDrawerController的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 上使用带有 Storyboard 的 UITabBarController 内的导航控制器

WebBrowser ContextMenu 运行菜单项的操作

ActionBar 菜单项的动态可绘制图标? (安卓,ActionBarSherlock)

更改 Blazor 菜单中导航项的可见性

在 viewpager 中显示列表视图项的上下文菜单

对状态栏项的 NSMenu 进行逆向工程