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];
    
}

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容