将rootViewController从uiviewcontroller更改为uinavigationcontroller

时间:2013-04-03 12:38:16

标签: ios uiviewcontroller uinavigationcontroller uiapplicationdelegate rootview

我正在开发一个使用MFsidemenu作为swipeBar的应用。 我的应用由loginController uiViewController组成,并在记录后更改为uiNavigationController

MFsidemenu需要在AppDelegate上运行此代码:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[NSBundle mainBundle]];
UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;

UIViewController *leftSideMenuViewController = [storyboard instantiateViewControllerWithIdentifier:@"leftSideMenuViewController"];
[MFSideMenu menuWithNavigationController:navigationController
                  leftSideMenuController:leftSideMenuViewController
                 rightSideMenuController:nil];

问题是如果initialView是uiViewController(登录),如何更改代码的第二行,之后如何将其传递给secondViewController(MainMenu),这是{ {1}}?

简而言之,我希望uiNavigationController仅适用于作为主控制器的secondController。谢谢!

更新: 通过下面的SpaceDust解决方案解决:)

问题更新: 因此,使用MFSidemenu的示例仅限于在控制器上显示侧面菜单。示例MFSidemenu从故事板上的任何其他segue中流出。在sidemenu上我实现sideMenuController导航到另一个控制器。那么如何使用uiTableViewController sideMenuController更改MainMenuView?我希望我的英语能够很好地代表我的情况。再次感谢!

1 个答案:

答案 0 :(得分:3)

如果您不希望在登录期间出现侧边菜单,则需要将uiViewController(Login)显示为模态视图控制器。

在storyboard中创建一个登录viewcontroller,给它一个storyboard id让我们说LoginViewController。不要将视图控制器连接到故事板上的任何东西,让它自己坐在角落里。

首先创建一个全局单例变量,检查用户是否已登录

然后在navigationcontroller's rootviewcontroller

-(void)viewWillAppear:(BOOL)animated
{
     //this will present the login view if user is not logged in
    if (isLoggedIn==NO) {

        UIStoryboard* sb = [UIStoryboard storyboardWithName:@"MainStoryboard"
                                                     bundle:nil];
        LoginViewController *loginVC = [sb instantiateViewControllerWithIdentifier:@"LoginViewController"];
        [self presentModalViewController:loginVC  animated:YES];

    }
}
登录过程完成后,在您的登录viewcontroller中

将全局单身布尔值更改为isLoggedIn=YES 然后关闭您的登录视图控制器。

[self dismissViewControllerAnimated:NO];