在Storyboard中使用tabBar控制器的侧面菜单

时间:2013-06-10 21:04:20

标签: ios xcode ios6

你好iOS开发人员,我是一个新手开发一个带有5个选项卡视图的项目,在第一个和第二个选项卡上,我使用Michael Frederick在他的GitHub页面Project Link:上的示例代码中的容器视图滑出菜单https://github.com/mikefrederick/MFSideMenu { {3}}。他正在使用nib(.xib)文件,虽然我正在使用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. 如何修改代码以容纳容器父视图和子视图?
  2. 我应该在哪里实例化第二个标签视图的父级和子级的代码?在AppDelegate或View Controller中?
  3. 如果需要任何其他详细信息,请发表评论。任何帮助将不胜感激。在此先感谢。

2 个答案:

答案 0 :(得分:4)

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

  • 删除app 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”的子类。将此视图标记为“属性”检查器中的“初始视图控制器”。现在使用来自新的初始视图控制器的Segue,让它“推”到你的TabBarController。为了避免警告重命名Segue。

完成此操作后,您可以向每个View添加UIBarButtonItem,您想添加SideMenu。在这个UIBarButtomItem的Action Method中你只需要这样做:

    [self.menuContainerViewController toggleLeftSideMenuCompletion:^{}];

最后确保你有一个UIViewController或一个UITableViewController,即你的“SideMenu”并设置正确的故事板ID。

如果您仍然需要帮助,请评论此... 抱歉我的英语:)

答案 1 :(得分:0)

您可以使用https://github.com/ozcanakbulut/VoovilSideMenu。它很容易嵌入tabBarController中。它使用Storyboard和Arc。