iOS 在 swift 主 StoryBoard 之前创建一个欢迎页面

标签 ios swift uiview storyboard uitabbarcontroller

我正在努力在 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/

相关文章:

ios - UITableView/indexPath.row : why does if statement exclude row 10?

ios - iOS Ionic构建失败

ios - Swift UITableView didSelectRowAtIndexPath 没有被调用

iphone - UILabel需要setNumberOfLines以适合我的文字大小

ios - 如何获取作为 UIView 子类的 ViewController 的所有属性

ios - -[NSKeyedUnarchiver decodeObjectForKey :]: cannot decode object of class

ios - UIWebView 的全部内容嵌入到 UITableView 中

swift - UICollectionView 不适合某些 Apple 设备上的 View Controller

ios - 限制 subview 在父 View 范围内的移动

objective-c - Cocoa 的 NIB/XIB 混淆