ios - Storyboard中带有 tabBarController 的侧边菜单

标签 ios xcode ios6

各位 iOS 开发人员,我是一名新手,正在开发一个包含 5 个选项卡 View 的项目,在第一个和第二个选项卡上,我使用 Michael Frederick 在他的 GitHub 页面上的示例代码中的容器 View 滑出菜单 Project Link: https://github.com/mikefrederick/MFSideMenu .他使用的是 nib (.xib) 文件,而我使用 Storyboard 来实现相同的目的,并且对定义容器和 subview 感到震惊。可以请一些建议如何修改下面的代码以适应我的 Storyboard 。

AppDelegate.m中的原始代码是

- (DemoViewController *)demoController {
return [[DemoViewController alloc] initWithNibName:@"DemoViewController" bundle:nil];
}

- (UINavigationController *)navigationController {
return [[UINavigationController alloc]
        initWithRootViewController:[self demoController]];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

UITabBarController *tabBarController = [[UITabBarController alloc] init];

[tabBarController setViewControllers:[NSArray arrayWithObjects:[self navigationController],
                                      [self navigationController], nil]];

SideMenuViewController *leftSideMenuController = [[SideMenuViewController alloc] init];
SideMenuViewController *rightSideMenuController = [[SideMenuViewController alloc] init];

MFSideMenuContainerViewController *container = [MFSideMenuContainerViewController
                                                    containerWithCenterViewController:tabBarController
                                                 leftMenuViewController:leftSideMenuController
                                                rightMenuViewController:rightSideMenuController];

self.window.rootViewController = container;
[self.window makeKeyAndVisible];

return YES;
}

@end
  1. 如何修改代码以容纳容器父 View 和 subview ?
  2. 我应该在哪里实例化第二个选项卡 View 的父 View 和 subview 的代码?在 AppDelegate 或 View Controller 中?

如果需要任何其他详细信息,请发表评论。任何帮助将不胜感激。提前致谢。

最佳答案

我不知道你是否还需要这个,但我今天也遇到了完全相同的问题。你需要做的是:

  • 通过您的应用委托(delegate)删除这两种方法

将其放入您的应用委托(delegate)中:

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

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

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

UITabBarController *centerViewController = [storyboard instantiateViewControllerWithIdentifier:@"IDENTITY_OF_YOUR_TABBARCONTROLLER"];

[container setCenterViewController:centerViewController];
[container setLeftMenuViewController:leftSideMenuViewController]; //for the right Side, its the same way...
[container setPanMode:MFSideMenuPanModeNone]; //remove this line, if you need the pan mode
return YES;

在您的 Storyboard 中,您必须将 ViewController 作为“MFSideMenuContainerViewController”的子类。在属性检查器中将此 View 标记为“初始 View Controller ”。现在从新的 Initial View Controller 使用 Segue 并让它“推送”到您的 TabBarController。为避免警告重命名 Segue。

做完这些之后,你可以给每个View添加一个UIBarButtonItem,你喜欢添加SideMenu。在这个 UIBarButtomItem 的 Action Method 中你只需要这样做:

    [self.menuContainerViewController toggleLeftSideMenuCompletion:^{}];

最后确保你有一个 UIViewController 或 UITableViewController,这是你的“SideMenu”并设置正确的 Storyboard ID。

如果您仍然需要帮助,请发表评论... 对不起我的英语:)

关于ios - Storyboard中带有 tabBarController 的侧边菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17032833/

相关文章:

ios - ITMS 错误 - 90725 : SDK version issue

swift - 使用 segue 将数据从 MainViewController 发送到 SideMenu

ios - 如何在 ios6 下的 MapView 中重现切换 setUserTrackingMode 的按钮?

ios - 数组在错误的位置返回值

javascript - 在 iphone chrome 浏览器中不使用 BLOB 对象下载文件

xcode - 替换 Swift2 Storyboard MAC OSX 下的 NSViewController

grails - 如何使用Grails通过电子邮件生成,签名和分发存折通行证?

ios - 在 iOS 中理解和使用这个 JSON 数据

ios - 检测 UILabel 换行符。动态地将项目放入 UITableViewCell

ios - setlocale() 在 iOS 模拟器中不起作用?