【问题标题】:Change rootViewController from uiviewcontroller to uinavigationcontroller将 rootViewController 从 uiviewcontroller 更改为 uinavigationcontroller
【发布时间】:2013-04-03 12:38:15
【问题描述】:

我正在开发一个使用MFsidemenu 作为滑动条的应用程序。 我的应用程序包含一个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(Login),如何更改代码的第二行,然后如何将其传递给secondViewController(MainMenu),即uiNavigationController

简而言之,我希望MFSidemenu 只能在第二个控制器上工作,它是主控制器。谢谢!

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

问题更新: 所以使用MFSidemenu 的例子只限于在控制器上显示一个侧边菜单。示例sideMenuController 从情节提要上的任何其他segue 中流放。在侧面菜单上,我实现了uiTableViewController 以导航到另一个控制器。那么如何用sideMenuControllerdidSelectRowAtIndexPath改变MainMenuView呢?我希望我的英语足够好来代表我的情况。再次感谢!

【问题讨论】:

  • 为什么不把navigationcontroller's rootviewcontroller 变成uiViewController(Login)
  • 因为我不希望滑动条在 loginController 上工作。我希望它只在第二个控制器的主菜单上工作。有什么想法吗?

标签: ios uiviewcontroller uinavigationcontroller uiapplicationdelegate rootview


【解决方案1】:

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

在情节提要中创建一个登录视图控制器,给它一个情节提要 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];

    }
}

登录过程完成后在您的登录视图控制器中 将全局单例布尔值更改为 isLoggedIn=YES 然后关闭您的登录视图控制器。

[self dismissViewControllerAnimated:NO];

【讨论】:

  • 一切都完美的男人!谢谢!但我在这里偶然发现了另一个问题。将更新我上面的问题。 :)
  • @AlvinR​​esmana 要从 tableviewcontroller 更新您的mainmenuview,您需要创建一个delegate pattern method 并在didSelectRowAtIndexPath 时调用它,这完全是一个新问题创建另一个更新mainmenuview 的问题,不要更新此问题,因为您的问题已解决
  • 谢谢@SpaceDust。我将创建另一个。抱歉更新,不知道规则。
猜你喜欢
  • 2012-03-31
  • 1970-01-01
  • 1970-01-01
  • 2011-11-28
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 2013-11-06
相关资源
最近更新 更多