首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带拆分视图的MMDrawerController

带拆分视图的MMDrawerController
EN

Stack Overflow用户
提问于 2013-06-06 11:33:14
回答 3查看 1.3K关注 0票数 2

我有一个既适用于iphone又适用于ipad的应用程序。

iphone的经典主/细节应用程序和ipad的splitview应用程序。

我想使用MMDrawerController Github添加滑出菜单

我设法在iphone上添加了它,但我不知道如何在ipad上添加它,并保持splitview / NavigationController的行为。

原始代码:

代码语言:javascript
复制
 self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
    MyMasterViewController *masterViewController = [[MyMasterViewController alloc] initWithNibName:@"MyMasterViewController_iPhone" bundle:nil];
    self.navigationController = [[UINavigationController alloc] initWithRootViewController:masterViewController];
    self.window.rootViewController = self.navigationController;
} else {
    MyMasterViewController *masterViewController = [[MyMasterViewController alloc] initWithNibName:@"MyMasterViewController_iPad" bundle:nil];
    UINavigationController *masterNavigationController = [[UINavigationController alloc] initWithRootViewController:masterViewController];

    MyDetailViewController *detailViewController = [[MyDetailViewController alloc] initWithNibName:@"MyDetailViewController_iPad" bundle:nil];
    UINavigationController *detailNavigationController = [[UINavigationController alloc] initWithRootViewController:detailViewController];

    masterViewController.detailViewController = detailViewController;

    self.splitViewController = [[UISplitViewController alloc] init];
    self.splitViewController.delegate = detailViewController;
    self.splitViewController.viewControllers = [NSArray arrayWithObjects:masterNavigationController, detailNavigationController, nil];

    self.window.rootViewController = self.splitViewController;
}
[self.window makeKeyAndVisible];

尝试使用MMDrawerControler:

代码语言:javascript
复制
UIViewController * leftSideDrawerViewController = [[MMExampleLeftSideDrawerViewController alloc] init];

NSString *strViewMaster = @"MyMasterViewController_iPhone";
 UIViewController * centerViewController = [[MyMasterViewController alloc] initWithNibName:strViewMaster bundle:nil];
// Override point for customization after application launch.
if ([[UIDevice currentDevice] userInterfaceIdiom] != UIUserInterfaceIdiomPhone) {
    strViewMaster = @"MyDetailViewController_iPad";
     centerViewController = [[MyDetailViewController alloc] initWithNibName:strViewMaster bundle:nil];
}

// unused
//UIViewController * rightSideDrawerViewController = [[MMExampleRightSideDrawerViewController alloc] init];

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

MMDrawerController * drawerController = [[MMDrawerController alloc]
                                         initWithCenterViewController:navigationController
                                         leftDrawerViewController:leftSideDrawerViewController];
[drawerController setMaximumRightDrawerWidth:200.0];

[drawerController setOpenDrawerGestureModeMask:MMOpenDrawerGestureModePanningNavigationBar];
[drawerController setCloseDrawerGestureModeMask:MMCloseDrawerGestureModeAll];

[drawerController
 setDrawerVisualStateBlock:^(MMDrawerController *drawerController, MMDrawerSide drawerSide, CGFloat percentVisible) {
     MMDrawerControllerDrawerVisualStateBlock block;
     block = [[MMExampleDrawerVisualStateManager sharedManager]
              drawerVisualStateBlockForDrawerSide:drawerSide];
     if(block){
         block(drawerController, drawerSide, percentVisible);
     }
 }];

//centerViewController.mm_drawerController = drawerController;
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[self.window setRootViewController:drawerController];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];

所以,在ipad上,滑出菜单是有效的,细节视图是加载的,但是我不知道如何定义masterViewcontroller /导航控制器,所以它不工作。

(对不起,正如你所见,我是一个真正的新手,有objective c和ios的概念)

谢谢

EN

回答 3

Stack Overflow用户

发布于 2013-07-10 10:21:31

@picolo

不幸的是,苹果强制UISplitViewController作为窗口的rootViewController,这意味着你不能将它放在容器视图控制器中。您必须编写自己的类似拆分视图控制器实现,以便将其放入另一个容器视图控制器中。

干杯

票数 1
EN

Stack Overflow用户

发布于 2013-12-31 19:17:31

MMDrawer不能与SplitViewController一起工作。尝试使用MFSlideMenu。它适用于几乎所有类型的控制器。

这是链接。--> MFSlideMenu

票数 1
EN

Stack Overflow用户

发布于 2013-06-07 14:44:15

使用SplitViewController时,MMDrawerController将不起作用。(正如在github项目描述中所说的)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16953290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档