[英]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
获取应用程序委托实例,在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上调用此方法。
我希望这能回答您的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.