Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios MFSideMenu如何在另一个ViewController中加载_Ios_Objective C_Mfslidemenu - Fatal编程技术网

Ios MFSideMenu如何在另一个ViewController中加载

Ios MFSideMenu如何在另一个ViewController中加载,ios,objective-c,mfslidemenu,Ios,Objective C,Mfslidemenu,我的应用程序基于登录视图和第二视图。登录后我将显示SecondView 我不想在LoginView上设置MFSideMenu。我想在第二视图中使用MFSideMenu。我正在尝试在我的AppDelegate.m中执行此操作: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { UIStoryboard *storyb

我的应用程序基于
登录视图
第二视图
。登录后我将显示SecondView

我不想在
LoginView
上设置
MFSideMenu
。我想在第二视图中使用
MFSideMenu
。我正在尝试在我的
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;
}
在上图中,我从我的
SideMenuContainerView
中显示了我的故事板属性(我想在这里加载
MFSideMenu
):

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

My
SecondView
并使用此行:

MFSideMenuContainerViewController *container = (MFSideMenuContainerViewController *)self.window.rootViewController;
但当我尝试这个:

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

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

MFSideMenu
不起作用。

将新的UIViewController作为登录视图控制器拉到主板上。在属性检查器中,将标识符更改为LoginViewController(或其他适当的名称)


成功登录后,只需关闭LoginViewController即可。

我将Lib更改为。

如果您试图从应用程序代理访问它,您将在此处找到代码。诀窍是尝试获取UINavigationController。你可以在这里看到,我是通过窗户找到的

    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;

主视图和侧视图控制器之间不应有任何链接(分段)或连接(可以设置主视图和侧视图控制器),设置其他脚本ID(
MainMenuViewController
-->
mainVC
SideMenuViewController
-->
sideVC
),
import MainMenuViewController,SideMenuViewController,MFSideMenu
loginview
上,现在调用下面的将移动视图:

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];
  • 创建两种登录和侧菜单创建方法
  • 在Appdeleagate.h中添加以下内容
    • (作废)createLoginPage
    • (void)createSidemenuPage
  • 在Appdelegate.m中,实现上述方法的定义。 例如:-
  • 使用SideMenuStoryBoardName为sidemenu创建storybard,并在“添加表”视图中拖动视图控制器,这是为sidemenu创建的
  • 使用CenterStoryboardName为home创建storybard,然后拖动视图控制器并设置该视图控制器的标识符
  • 使用appdelegate对象在登录成功后调用createSidemenu方法
  • 代码:


    在appDelegate中编写的代码,您必须在登录按钮的单击事件中编写该代码。我可以这样做吗UIViewController*baseViewApp=[storyboard InstanceDeviceController的标识符:@“MFSideMenuContainerViewController”];MFSideMenuContainerViewController*容器=(MFSideMenuContainerViewController*)baseViewApp.view.window.rootViewController``说真的。。。天气好多了!!!我应该在哪里写上面的代码?因为我想实现同样的功能。
        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;
    
    UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:YourViewController];
    
    MFSideMenuContainerViewController *container = (MFSideMenuContainerViewController *)self.view.window.rootViewController;
    [container setCenterViewController:nav];
    
    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];
    
    (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];
    }