Swift

时间:2015-12-17 17:43:25

标签: ios swift viewcontroller

我是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的按钮时,包含所有菜单。

请帮助我,我真的不知道该怎么做:(

1 个答案:

答案 0 :(得分:3)

这是因为您在createMenuView方法中将根视图控制器替换为slideMenuController,并在app delegate中的didFinishLaunchingWithOptions中调用它。一旦应用程序启动,此代码将立即执行。

解决方案:尝试在createMenuView方法中使用UIApplication.sharedApplication().delegate获取应用程序委托实例,在LoginViewController中定义此方法,然后在LoginViewController中单击按钮后调用此方法(而不是这样做):你想去哪里打电话)。 请在登录视图控制器中单击按钮后调用createMenuView()方法,可以在mainViewController的ViewWillAppear中。

在LoginViewController中重写这样的方法,或者根据你的要求在任何地方重写:

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上调用此方法。

我希望这能回答你的问题。