3

我的应用程序基于 aLoginViewSecondView. 我将在登录后显示 SecondView。

我不想MFSideMenuLoginView。我想MFSideMenu只在SecondView. 我正在尝试在我的AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

     UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[NSBundle mainBundle]];


 UIViewController *baseViewApp = [storyboard instantiateViewControllerWithIdentifier:@"MFSideMenuContainerViewController"];

 MFSideMenuContainerViewController *container = (MFSideMenuContainerViewController *)baseViewApp.view.window.rootViewController;

 //MFSideMenuContainerViewController *container = (MFSideMenuContainerViewController *)self.window.rootViewController;

 UINavigationController *navigationController = [storyboard instantiateViewControllerWithIdentifier:@"navigationController"];

 UIViewController *leftSideMenuViewController = [storyboard instantiateViewControllerWithIdentifier:@"leftSideMenuViewController"];
 UIViewController *rightSideMenuViewController = [storyboard instantiateViewControllerWithIdentifier:@"rightSideMenuViewController"];


 [container setLeftMenuViewController:leftSideMenuViewController];
 [container setRightMenuViewController:rightSideMenuViewController];
 [container setCenterViewController:navigationController];

return YES;
}

在上图中,我展示了我的 StoryBoard 属性SideMenuContainerView(我想加载的位置MFSideMenu):

http://santoro.co/ios_deve.png

MFSideMenu我开始使用初始构建我的应用程序时,它正在工作ViewController

SecondView和这条线:

MFSideMenuContainerViewController *container = (MFSideMenuContainerViewController *)self.window.rootViewController;

但是当我尝试这个时:

UIViewController *baseViewApp = [storyboard instantiateViewControllerWithIdentifier:@"MFSideMenuContainerViewController"];

 MFSideMenuContainerViewController *container = (MFSideMenuContainerViewController *)baseViewApp.view.window.rootViewController;

MFSideMenu不起作用。

4

7 回答 7

3

If you are trying to access it form the app delegate you will find the code here. The trick is trying to get the UINavigationController. You can see here I find it via the window.

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[NSBundle mainBundle]];

    MFSideMenuContainerViewController *container = (MFSideMenuContainerViewController *)self.window.rootViewController;
    HomeViewController * homeVC = [storyboard 
instantiateViewControllerWithIdentifier:@"HomeViewController"];

    NSArray *controllers = [NSArray arrayWithObject:homeVC];
    UINavigationController * navigationController = (UINavigationController* )container.centerViewController;
    navigationController.viewControllers = controllers;
于 2014-05-06T02:27:48.700 回答
0

拉上一个新的 UIViewController,它将作为 MainStoryboard 上的登录视图控制器。在属性检查器中将标识符更改为 LoginViewController (或适当的东西)

- (void)viewDidAppear:(BOOL)animated
{
     [super viewDidAppear:animated];

      UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
      UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"LoginViewController"];
      [vc setModalPresentationStyle:UIModalPresentationFullScreen];

      [self presentModalViewController:vc animated:YES];
}

成功登录后只需关闭 LoginViewController

于 2013-07-25T07:17:05.657 回答
0

我通过将 Lib 更改为JASidePanels来解决此问题。

于 2013-07-25T18:58:57.077 回答
0
 VideosViewController *videosViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"VideosViewController"];

            UINavigationController *navigationController = self.menuContainerViewController.centerViewController;
            NSArray *controllers = [NSArray arrayWithObject:videosViewController];
            navigationController.viewControllers = controllers;
    //VKJ
于 2013-11-06T11:19:13.657 回答
0
UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:YourViewController];

MFSideMenuContainerViewController *container = (MFSideMenuContainerViewController *)self.view.window.rootViewController;
[container setCenterViewController:nav];
于 2015-04-06T09:03:26.827 回答
0
  1. 创建登录和创建侧边菜单的两种方法
  2. 在 Appdeleagate.h 添加这个
    • (void)createLoginPage;
    • (void)createSidemenuPage;
  3. 在 Appdelegate.m 中实现上述方法的定义。例子:-
  4. 使用 SideMenuStoryBoardName 的名称为 sidemenu 创建 storybard 并在添加表视图中拖动一个视图控制器,这是用于 sidemenu 的。
  5. 使用 CenterStoryboardName 的名称为 home 创建故事板并拖动视图控制器并设置该视图控制器的标识符。
  6. 使用 appdelegate 对象登录成功后调用 createSidemenu 方法。

代码:

(void)createLoginPage
{
    self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
    UIStoryboard *loginStoryBoard = [UIStoryboard storyboardWithName:LoginStoryBoardName bundle:nil];
    SigninViewController *signVC = [loginStoryBoard instantiateViewControllerWithIdentifier:SigninViewControllerIdentifier];
    UINavigationController* nav = [[UINavigationController alloc]initWithRootViewController:signVC];
    nav.navigationBar.hidden = YES;
    self.window.rootViewController = nav;
    [self.window makeKeyAndVisible];
}

(void)createSidemenuPage
{
    //-- Left ViewController
    UIStoryboard *sideMenuSB = [UIStoryboard storyboardWithName:SideMenuStoryBoardName bundle:[NSBundle mainBundle]];
    SideMenu *sideMenuVC = [sideMenuSB instantiateViewControllerWithIdentifier:SideMenuIdentifier];
    //-- Center ViewController
    UIStoryboard *centerVC = [UIStoryboard storyboardWithName:CenterStoryboardName bundle:[NSBundle mainBundle]];
    UINavigationController *navigationController = [[UINavigationController alloc]initWithRootViewController:centerVC];
    MFSideMenuContainerViewController *container  =[MFSideMenuContainerViewController containerWithCenterViewController:navigationController leftMenuViewController:sideMenuVC rightMenuViewController:nil];
    self.window.rootViewController = container;
    [self.window makeKeyAndVisible];
}
于 2016-10-13T07:38:07.240 回答
0

不应该有任何链接(segues)或与主视图控制器和侧视图控制器的连接(可以设置主视图和侧视图),设置标识符否则故事板ID(MainMenuViewController---> mainVCSideMenuViewController---> sideVC) ,现在import MainMenuViewController, SideMenuViewController, MFSideMenuloginview下面调用将移动视图:

MainMenuViewController *mainMenuVC = [self.storyBoard instantiateViewControllerWithIdentifier: 
@"mainVC"];

SideMenuViewController *sideVC = [self.storyBoard instantiateViewControllerWithIdentifier:
@"sideVC"];

        MFSideMenuContainerViewController *container = [MFSideMenuContainerViewController
                                                        containerWithCenterViewController:mainMenuVC
                                                        leftMenuViewController:sideVC
                                                        rightMenuViewController:nil];
        [self.navigationController pushViewController:container animated:YES];
于 2015-08-07T08:31:11.457 回答