iOS在主要的StoryBoard之前在swift

时间:2016-07-26 07:50:31

标签: ios swift uiview storyboard uitabbarcontroller

我正在努力在第一次运行App时创建一个欢迎页面。 实际上,我已经完成了这个App UI的所有内容,但所有内容都基于故事板。 (因此,有趣的应用程序'在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()(在故事板中标识)刚刚显示为空白。当我在欢迎页面的最后一页中单击完成按钮(调用"窗口!.rootViewController = MainTabBarController()"通过通知中心)时,它也显示为空白(当然)。

那么,我怎么能达到这样的要求呢?在登录时可能会有同样的想法吗?

2 个答案:

答案 0 :(得分:2)

尝试不是从AppDelegate实例化欢迎屏幕,而是从最初的ViewController实例化。

在viewDidLoad()中的初始ViewController中,使用NSUserDefaults添加对isFristOpenApp的检查,如果它是第一次暴露给用户的app,则只需使用storyboard标识符从storyboard调用instantiate。像这样:

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")

答案 1 :(得分:0)

我会这样做:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    // show Welcome View

    let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let welcomeController = mainStoryboard.instantiateViewControllerWithIdentifier("welcomeController") as! WelcomeController
    self.window?.rootViewController = welcomeController

    // Override point for customization after application launch.
    return true
}

这将显示应用程序启动时的“欢迎视图”

并在WelcomeView中使用它来加载MainTabBar

func showMainTab() {
    let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let tabBarController = mainStoryboard.instantiateViewControllerWithIdentifier("tabBarController") as! MainTabBarController
    let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
    appDelegate.window?.rootViewController = tabBarController
}