Swift 中的初始视图控制器
Initial view controllers in 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。
请帮帮我,我真的不知道该怎么办:(
这是因为您在 createMenuView 方法中将根视图控制器替换为 slideMenuController,并在应用程序委托中的 didFinishLaunchingWithOptions
中调用它。此代码将在应用启动后立即执行。
解决方法:与其这样,不如尝试在createMenuView方法中使用UIApplication.sharedApplication().delegate
获取application 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上调用此方法。
我希望这能回答您的问题。
我是 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。
请帮帮我,我真的不知道该怎么办:(
这是因为您在 createMenuView 方法中将根视图控制器替换为 slideMenuController,并在应用程序委托中的 didFinishLaunchingWithOptions
中调用它。此代码将在应用启动后立即执行。
解决方法:与其这样,不如尝试在createMenuView方法中使用UIApplication.sharedApplication().delegate
获取application 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上调用此方法。
我希望这能回答您的问题。