Xcode Swift:由于滑出菜单,登录/注册页面未首先显示
Posted
技术标签:
【中文标题】Xcode Swift:由于滑出菜单,登录/注册页面未首先显示【英文标题】:Xcode Swift: Login/Signup Page not displaying first due to slideoutmenu 【发布时间】:2016-08-01 00:23:43 【问题描述】:我正在使用 xcode/swift 创建一个应用程序,该应用程序实现了滑动侧边栏菜单以及登录/注册过程。滑动侧边栏菜单功能应该只能在完成登录或注册后立即在下一个视图中访问。
我在这里按照滑动侧边栏教程的说明进行操作:Ray Wenderlich - 侧边栏教程
问题是 -> 我的侧边栏菜单功能仅在包含视图是打开应用程序时显示的第一个视图时才有效。
有时这是可以的,因为一旦用户登录,侧边栏菜单视图是显示的第一个视图 -- 但并非总是如此 -- 注销的用户必须先完成注册/登录才能进行访问/转换到此视图。
我确实将应用程序的初始视图设置为指向情节提要中的 LoginViewController,所以我不知道为什么它不会首先加载!?
我的猜测是这与在我的 AppDelegate.swift 文件中设置 rootviewcontroller 有关。
AppDelegate.swift
class AppDelegate: UIResponder, UIApplicationDelegate
var window: UIWindow?
func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool
window = UIWindow(frame: UIScreen.mainScreen().bounds)
let containerViewController = ContainerViewController()
window!.rootViewController = containerViewController
window!.makeKeyAndVisible()
return true
如何强制在应用程序启动时首先显示 loginViewController!?
【问题讨论】:
只需实例化您的loginVC
并使其成为您的rootViewController
,然后从那里实例化您的containerViewController
并使用loginVC
来呈现它,您可以制作一些NSUserDefault
来检查用户是否登录与否,然后直接呈现containerViewController
下一次
【参考方案1】:
首先你需要将你的 rootViewController 设置为 loginVC 所以在你的 appDelegate 文件中替换上面的方法
func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool
window = UIWindow(frame: UIScreen.mainScreen().bounds)
// replace names accordingly
let loginViewController = LoginViewController()
window!.rootViewController = loginViewController
window!.makeKeyAndVisible()
return true
现在您应该将用户的状态保存在 userDefaults 或其他内容中。例如,如果用户未登录
NSUserDefaults.standardUserDefaults().setBool(false, forKey: "isUserLoggedIn)
当用户登录应用程序时,您可以像这样更新 userDefault
NSUserDefaults.standardUserDefaults().boolForKey("isUserLoggedIn")
所以你的最终函数应该看起来像这样
func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool
window = UIWindow(frame: UIScreen.mainScreen().bounds)
if NSUserDefaults.standardUserDefaults().boolForKey("isUserLoggedIn") == true
let containerViewController = ContainerViewController()
window!.rootViewController = containerViewController
window!.makeKeyAndVisible()
else
let loginViewController = LoginViewController()
window!.rootViewController = loginViewController
window!.makeKeyAndVisible()
return true
【讨论】:
以上是关于Xcode Swift:由于滑出菜单,登录/注册页面未首先显示的主要内容,如果未能解决你的问题,请参考以下文章
通过ajax前端后台交互/登录页和注册页前端后台交互详解/前端后台交互基础应用/几个后台函数的基础应用/php文件函数基础应用/php字符传函数基础应用/php数组函数基础应用