【问题标题】:iOS Make a welcome page before main StoryBoard in swiftiOS 在主 StoryBoard 之前快速创建一个欢迎页面
【发布时间】:2016-11-29 18:07:13
【问题描述】:

我正在努力在应用程序首次运行时创建一个欢迎页面。 实际上,我已经完成了这个 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()(在故事板中标识)只是显示为空白。当我在欢迎页面的最后一页单击完成按钮(通过通知中心调用“window!.rootViewController = MainTabBarController()”)时,它也显示为空白(当然)。

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

【问题讨论】:

    标签: ios swift uiview storyboard uitabbarcontroller


    【解决方案1】:

    我会这样做:

    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
    }
    

    【讨论】:

      【解决方案2】:

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

      在 viewDidLoad() 中的初始 ViewController 中,使用 NSUserDefaults 添加对 isFristOpenApp 的检查,如果这是第一次向用户公开应用程序,则只需使用故事板标识符从故事板调用实例化。像这样:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-04
        • 2023-03-28
        • 2021-08-13
        • 1970-01-01
        • 1970-01-01
        • 2015-10-14
        • 2019-03-28
        • 2018-01-24
        相关资源
        最近更新 更多