Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.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 MM抽屉控制器实例化_Ios_Objective C - Fatal编程技术网

Ios MM抽屉控制器实例化

Ios MM抽屉控制器实例化,ios,objective-c,Ios,Objective C,我正在尝试在我的应用程序中使用MMDrawerController。我已经下载了源代码和依赖项。这是我添加到AppDelegate的代码 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { UIViewController * leftDrawer = [[UIViewController alloc] init];

我正在尝试在我的应用程序中使用MMDrawerController。我已经下载了源代码和依赖项。这是我添加到AppDelegate的代码

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    UIViewController * leftDrawer = [[UIViewController alloc] init];
    UIViewController * center = [[UIViewController alloc] init];
    UIViewController * rightDrawer = [[UIViewController alloc] init];

    MMDrawerController * drawerController = [[MMDrawerController alloc]
                                             initWithCenterViewController:center
                                             leftDrawerViewController:leftDrawer
                                             rightDrawerViewController:rightDrawer];

    UINavigationController * navigationController = [[UINavigationController alloc] initWithRootViewController:center];

    [navigationController setRestorationIdentifier:@"MMExampleCenterNavigationControllerRestorationKey"];

    [self.drawerController setRestorationIdentifier:@"MMDrawer"];
    [self.drawerController setMaximumRightDrawerWidth:200.0];
    [self.drawerController setOpenDrawerGestureModeMask:MMOpenDrawerGestureModeAll];
    [self.drawerController setCloseDrawerGestureModeMask:MMCloseDrawerGestureModeAll];



    [self.drawerController
     setDrawerVisualStateBlock:^(MMDrawerController *drawerController, MMDrawerSide drawerSide, CGFloat percentVisible) {
         UIViewController * sideDrawerViewController;
         if(drawerSide == MMDrawerSideLeft){
             sideDrawerViewController = drawerController.leftDrawerViewController;
         }
         else if(drawerSide == MMDrawerSideRight){
             sideDrawerViewController = drawerController.rightDrawerViewController;
         }
         [sideDrawerViewController.view setAlpha:percentVisible];
     }];

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    [self.window setRootViewController:self.drawerController];

    return YES;
}

但是,应用程序运行到一个空白屏幕。我缺少什么?

在返回之前用以下代码替换代码行

[self.window setRootViewController:navigationController];

将返回前的代码行替换为以下内容

[self.window setRootViewController:navigationController];

您的问题是您正在使用UIViewController设置中心视图、右视图和左视图,而且这些UIViewController设置未定义 要正确集成MMDroperController,请执行以下操作

为了保证视图已初始化,您可以使用此代码在脚本中创建UIViewController

UIStoryboard *storyboard;

storyboard = [UIStoryboard storyboardWithName:"Story board name" bundle:nil];

UIViewController * leftSideNavController = 
[storyboard instantiateViewControllerWithIdentifier:
                                                "Left side view identifier"];

UIViewController * centerSideNavController = 
[storyboard instantiateViewControllerWithIdentifier:
                                                   "center view identifier"];

UIViewController * rightSideNavController = 
[storyboard instantiateViewControllerWithIdentifier:
                                               "right side view identifier"];
然后使用从上一点获得的UIViewController初始化MMDrawerController

self.drawerController = 
  [[MMDrawerController alloc] 
         initWithCenterViewController:centerSideNavController 
             leftDrawerViewController:leftSideNavController 
            rightDrawerViewController:rightSideNavController];

您的问题是您正在使用UIViewController设置中心视图、右视图和左视图,而且这些UIViewController设置未定义 要正确集成MMDroperController,请执行以下操作

为了保证视图已初始化,您可以使用此代码在脚本中创建UIViewController

UIStoryboard *storyboard;

storyboard = [UIStoryboard storyboardWithName:"Story board name" bundle:nil];

UIViewController * leftSideNavController = 
[storyboard instantiateViewControllerWithIdentifier:
                                                "Left side view identifier"];

UIViewController * centerSideNavController = 
[storyboard instantiateViewControllerWithIdentifier:
                                                   "center view identifier"];

UIViewController * rightSideNavController = 
[storyboard instantiateViewControllerWithIdentifier:
                                               "right side view identifier"];
然后使用从上一点获得的UIViewController初始化MMDrawerController

self.drawerController = 
  [[MMDrawerController alloc] 
         initWithCenterViewController:centerSideNavController 
             leftDrawerViewController:leftSideNavController 
            rightDrawerViewController:rightSideNavController];
无需在下面一行写下:

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
希望这将完美地工作

无需在下面一行写下:

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

希望这能很好地工作。

您使用CoCoapod吗?不,我正在手动添加依赖项。请参阅编辑。您是否使用cocoapods?不,我正在手动添加依赖项。请参阅编辑。不,不起作用。此外,我没有xib或故事板,假设所有内容都是以编程方式生成的。我需要一个吗?是的,您尝试添加一个具有空白视图的xibor情节提要,否则您无法将控件动态添加到ViewControllerOpe中。该操作不起作用。此外,我没有xib或故事板,假设所有内容都是以编程方式生成的。我需要一个吗?是的,您尝试添加具有空白视图的xibor情节提要,否则无法将控件动态添加到viewcontroller