0

我有一个快速实现侧边菜单的应用程序。( http://www.appcoda.com/sidebar-menu-swift/ )

我实现了 3D 触摸快捷方式,快速操作,它几乎可以工作。

问题是我直接到达我的视图而没有实例化revealViewController(),代码如下:

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let navVC = storyboard.instantiateViewControllerWithIdentifier("newsViewController") as! UINavigationController
self.window?.rootViewController?.presentViewController(navVC, animated: true, completion: nil)

我不知道如何/在哪里实例化revealViewController()。

我有:

self.revealViewController() == nil 

现在发生的是菜单不想打开。

感谢您的帮助 :-)

4

4 回答 4

2

您可以通过以下链接找到答案: How to push viewcontroller from appdelegate in storyboard

我写的代码如下它对我有用。

    UIStoryboard *st = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    SWRevealViewController *mainRevealController = [[SWRevealViewController alloc] init];
    CaseCollectionViewController *descController = (CaseCollectionViewController*)[st instantiateViewControllerWithIdentifier: @"CaseCollection"];
    descController.selectedLevel = @"pll";
    descController.title = @"PLL";

    //UINavigationController *frontNavigationController = [[UINavigationController alloc] initWithRootViewController:descController];
    UINavigationController *frontNavigationController = (UINavigationController*)[st instantiateViewControllerWithIdentifier: @"NavigationViewCtrl"];
    [frontNavigationController setViewControllers:@[descController]];
    SidebarTableViewController *rearViewController = (SidebarTableViewController*)[st instantiateViewControllerWithIdentifier: @"SideBarView"];
    mainRevealController.rearViewController = rearViewController;
    mainRevealController.frontViewController = frontNavigationController;
    self.window.rootViewController = mainRevealController;
于 2015-11-05T03:29:11.357 回答
1

对于那些想用 Swift 做的人:

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let frontNavigationController = storyboard.instantiateViewControllerWithIdentifier("planningViewController")
let rearNavifationController = storyboard.instantiateViewControllerWithIdentifier("menuViewController")
let mainRevealController : SWRevealViewController = SWRevealViewController(rearViewController: rearNavifationController, frontViewController: frontNavigationController)
self.window?.rootViewController? = mainRevealController
于 2015-11-06T16:59:42.777 回答
0

为了让您的显示 ViewControlled 您必须在故事板中将其设置为 InitialViewController,不需要在 Appdelgate 中编写任何代码。

您可以在git hub 故事板示例中找到最好的示例, 或者像下面的屏幕截图一样设置 在此处输入图像描述

于 2015-10-31T11:52:53.840 回答
0

用于深度链接的 Objective-c 代码。它将通过侧边菜单打开主页,并将主页(前视图控制器)推送到通知视图控制器。

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UINavigationController *frontViewControllerNav = [storyboard instantiateViewControllerWithIdentifier:@"homeNav"];// navigation controller of home screen..
UINavigationController *rearViewControllerNav = [storyboard instantiateViewControllerWithIdentifier:@"sideMenuNav"];//navigation controller of menu screen..

SWRevealViewController *revealController = [[SWRevealViewController alloc] initWithRearViewController:rearViewControllerNav frontViewController:frontViewControllerNav];
revealController.delegate = self;
UIViewController *notificationView=[storyboard instantiateViewControllerWithIdentifier:@"notificationVC"];
[frontViewControllerNav pushViewController:notificationView animated:NO];
revealController.bounceBackOnOverdraw=NO;
//revealController.stableDragOnOverdraw=YES;
self.window.rootViewController = revealController;
于 2016-09-10T12:39:39.067 回答