2015-10-17 28 views
0

我有一個應用程序在swift中實現了一個側面菜單。 (http://www.appcoda.com/sidebar-menu-swift/SWRevealViewController和3D Touch quickActions

我實現了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 

現在會發生什麼是菜單不希望打開。

謝謝您的幫助:-)

回答

1

對於那些誰想要斯威夫特做到這一點:

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 
0

爲了得到你揭示ViewControlled你必須讓它作爲InitialViewController在故事板,不需要寫Appdelgate任何代碼。

你可以找到git hub storyboard example 或 最好的例子建立類似下面的屏幕截圖 enter image description here

+0

問題是,當我使用3D觸控快速行動,該應用程序直接進我的看法,我選擇用quickActions,所以應用程序不通過都不也不sw_rear去sw_front。我該如何解決這個問題? – papay0

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; 
0

深linking.It 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;