RESideMenu之坑(通过根视图push)

RESideMenu之神坑
公司出新项目需求是侧滑功能,鉴于侧滑三方很多,所以打算使用三方实现,精挑细选下选择了RESideMenu,根据github上的DEMO实现了简单的侧滑功能,发现这个三方是简单易用,就选择它。

需求之坑:
测试DEMO时发现点击leftMenuView上的按钮并非通过RootVC进行Push,而是设置根视图,点击完后无法返回,需要重新设置rootViewController才可以返回主页。

// 此为官方DEMO LeftMenuViewController 代码片段
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
    switch (indexPath.row) {
        case 0:
            [self.sideMenuViewController setContentViewController:[[UINavigationController alloc] initWithRootViewController:[[DEMOFirstViewController alloc] init]]
                                                         animated:YES];
            [self.sideMenuViewController hideMenuViewController];
            break;
        case 1:
            [self.sideMenuViewController setContentViewController:[[UINavigationController alloc] initWithRootViewController:[[DEMOSecondViewController alloc] init]]
                                                         animated:YES];
            [self.sideMenuViewController hideMenuViewController];
            break;
        default:
            break;
    }
}

填坑之旅:
我们的需求是点击leftMenuView时通过根视图跳转,跳转后可返回根视图。
于是谷歌、百度、必应等搜索引擎各种找,但没找到解决方法。
没办法,自己尝试解决吧。
通过不断摸索发现RESideMenu.h类中有:

@property (strong, readwrite, nonatomic) UIViewController *contentViewController;

RESideMenu.m中的初始化方法,就是用contentViewController来接收根视图

- (id)initWithContentViewController:(UIViewController *)contentViewController leftMenuViewController:(UIViewController *)leftMenuViewController rightMenuViewController:(UIViewController *)rightMenuViewController
{
    self = [self init];
    if (self) {
        _contentViewController = contentViewController;
        _leftMenuViewController = leftMenuViewController;
        _rightMenuViewController = rightMenuViewController;
    }
    return self;
}

于是我开始想是否可以通过_contentViewController来push视图呢?
于是我po打印self.sideMenuViewController.contentViewController发现它竟然是UINavigationController,于是我尝试进行强转,发现竟然可行。
实现代码如下:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
    // 关键代码
    [(UINavigationController *)self.sideMenuViewController.contentViewController pushViewController:[[MyCommissionViewController alloc] init] animated:YES];
    
    [self.sideMenuViewController hideMenuViewController];
    
}

因为没有发现有类似问题解决方法,所以发个,希望可以帮助遇到同样问题小伙伴。

你可能感兴趣的:(RESideMenu之坑(通过根视图push))