我正在努力在 App 首次运行时创建一个欢迎页面。 实际上,我已经完成了这个 App UI 的所有内容,但是所有内容都基于 Storyboard。 (所以,'fun application' 在 AppDelegate.swift 中是空的)
现在,我已经根据代码“welcomeController()”设计了一个欢迎页面
然后我在 AppDelegate -> 有趣的应用程序中添加了以下代码来检查是否吃午饭
window = UIWindow(frame: ScreenBounds)
window!.makeKeyAndVisible()
let isFristOpen = NSUserDefaults.standardUserDefaults().objectForKey("isFristOpenApp")
if isFristOpen == nil {
window?.rootViewController = welcomeController()
NSUserDefaults.standardUserDefaults().setObject("isFristOpenApp", forKey: "isFristOpenApp")
}else {
window!.rootViewController = MainTabBarController()
}
欢迎页面工作正常,但 MainTabBarController()(在 Storyboard 中被识别)只是显示为空白。当我在欢迎页面的最后一页单击完成按钮(通知中心调用“window!.rootViewController = MainTabBarController()”)时,它也显示为空白(当然)。
那么,我怎样才能达到这样的要求呢?登录时可能有同样的想法?
最佳答案
尝试不从 AppDelegate 而是从您的初始 ViewController 实例化您的欢迎屏幕。
在 viewDidLoad() 的初始 ViewController 中添加使用 NSUserDefaults 检查 isFristOpenApp,如果这是第一次向用户公开应用程序,您只需使用 Storyboard标识符从 Storyboard调用实例化。像这样:
override func viewDidLoad() {
let userDefaults = NSUserDefaults.standardUserDefaults()
let isFristOpen = userDefaults.boolForKey("isFristOpenApp")
if isFristOpen == true {
if let welcomeController = storyboard?.instantiateViewControllerWithIdentifier("WelcomeController") as? WelcomeController {
self.presentViewController(welcomeController , animated: true, completion: nil)
}
}
}
在您的 welcomeController 中的某处,您可以将 isFirstOpen 设置为 false:
let userDefaults = NSUserDefaults.standardUserDefaults()
userDefaults.setBool(false, forKey: "isFristOpenApp")
关于iOS 在 swift 主 StoryBoard 之前创建一个欢迎页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38584005/