2016-07-26 82 views
0

我正在创建第一次运行App时的欢迎页面。其实,我已经完成了这个应用程序界面的一切,但一切都基于故事板。 (所以,“有趣的应用程序”中AppDelegate.swift是空的)iOS在swift主要StoryBoard之前制作欢迎页面

现在,我基于代码“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()”)在欢迎页面的最后一页时,它也显示为空(当然)。

那么,我怎么能达到这样的要求呢?也许同样的想法在登录?

回答

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 
} 
1

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

在viewDidLoad()中的初始ViewController中,使用NSUserDefaults添加对isFristOpenApp的检查,并且如果它是第一次将应用程序暴露给用户,则只需使用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")