2015-12-17 45 views
2

我是Swift中的新編程,但我有一些問題。Swift中的初始視圖控制器

我有一個登錄頁面(LoginViewController),當我點擊按鈕時,它會轉向另一個視圖控制器(MainViewController)。 的問題是,在MainViewController我使用從這裏滑動菜單:https://github.com/dekatotoro/SlideMenuControllerSwift 以及其中滑動菜單完成的代碼中的AppDelegate:

private func createMenuView() { 

    // create viewController code... 
    let storyboard = UIStoryboard(name: "Main", bundle: nil) 


    let mainViewController = storyboard.instantiateViewControllerWithIdentifier("MainViewController") as! MainViewController 
    let leftViewController = storyboard.instantiateViewControllerWithIdentifier("LeftViewController") as! LeftViewController 
    let rightViewController = storyboard.instantiateViewControllerWithIdentifier("RightViewController") as! RightViewController 

    let nvc: UINavigationController = UINavigationController(rootViewController: mainViewController) 

    UINavigationBar.appearance().tintColor = UIColor(hex: "689F38") 

    leftViewController.mainViewController = nvc 

    let slideMenuController = ExSlideMenuController(mainViewController:nvc, leftMenuViewController: leftViewController, rightMenuViewController: rightViewController) 
    slideMenuController.automaticallyAdjustsScrollViewInsets = true 
    self.window?.backgroundColor = UIColor(red: 236.0, green: 238.0, blue: 241.0, alpha: 1.0) 
    self.window?.rootViewController = slideMenuController 
    self.window?.makeKeyAndVisible() 


} 

,在這種應用功能的createMenuView叫:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    self.createMenuView() 
    return true 
} 

這樣做的問題是,LoginViewController是初始視圖控制器,當我離開它時,MainViewController顯示爲初始視圖控制器。

我該怎麼做,以便LoginViewController是初始和當用戶按下登錄中的按鈕設置爲MainViewController與所有菜單的東西。

請幫助我,我真的不`噸知道該怎麼辦:(

+0

不確定我是否承擔了發生了什麼事。你能稍微花點時間解釋一下嗎?什麼是「與所有菜單的東西。」? – adolfosrs

+0

我需要首先呈現LoginViewController,但由於createMenuView()已在基金應用程序中執行(...),因此它顯示爲初始視圖控制器。所以我想要的是,當我點擊登錄按鈕時,MainViewController出現在幻燈片菜單中。 –

回答

3

那是因爲你要替換根視圖控制器是slideMenuController在createMenuView方法,把它在didFinishLaunchingWithOptions在應用程序委託,該代碼將想要獲取應用啓動執行

解決方案:不是這樣的,試圖讓在createMenuView方法使用UIApplication.sharedApplication().delegate應用委託實例,在LoginViewController定義這個方法,然後按一下按鈕在以後調用此方法LoginViewController(你想打電話的地方) 請在登錄視圖控制器中單擊按鈕後調用createMenuView()方法,可能會在mainViewController的ViewWillAppear中。

private func createMenuView() { 
    // create viewController code... 
    let storyboard = UIStoryboard(name: "Main", bundle: nil) 
    let mainViewController = storyboard.instantiateViewControllerWithIdentifier("MainViewController") as! MainViewController 
    let leftViewController = storyboard.instantiateViewControllerWithIdentifier("LeftViewController") as! LeftViewController 
    let rightViewController = storyboard.instantiateViewControllerWithIdentifier("RightViewController") as! RightViewController 
    let nvc: UINavigationController = UINavigationController(rootViewController: mainViewController) 
    UINavigationBar.appearance().tintColor = UIColor(hex: "689F38") 
    leftViewController.mainViewController = nvc 
    let slideMenuController = ExSlideMenuController(mainViewController:nvc, leftMenuViewController: leftViewController, rightMenuViewController: rightViewController) 
    slideMenuController.automaticallyAdjustsScrollViewInsets = true 
    let appDelegate = UIApplication.sharedApplication().delegate 
    appDelegate.window?.backgroundColor = UIColor(red: 236.0, green: 238.0, blue: 241.0, alpha: 1.0) 
    appDelegate.window?.rootViewController = slideMenuController 
    appDelegate.window?.makeKeyAndVisible() 
} 

呼籲在LoginViewController登錄按鈕的@IBAction這種方法:任何你希望它可以根據您的要求

改寫像這裏面LoginViewController或者方法。

我希望這個答案是你的問題。

+0

非常感謝我能去嘗試:) –

+0

在appDelegate!.window?!。backgroundColor = UIColor(red:236.0,green:238.0,blue:241.0,alpha:1.0) appDelegate!.window?!。 rootViewController = slideMenuController appDelegate!.window?!。makeKeyAndVisible()我得到錯誤,根據Xcode的解決方案是把一個!在「appDelegate」和另一個下一個「窗口」中。我運行它,我沒有得到任何錯誤,但當我在登錄按下按鈕MainView控制器顯示爲空 –

+0

非常感謝!它的工作原理:) –

相關問題