ViewController仅在首次启动时出现

时间:2016-02-12 01:06:58

标签: swift uiviewcontroller

我希望我的viewController名为“DoctorInformationController”,只有当用户第一次启动应用程序时才会出现。我已经看到了一些人的答案,但是我想知道如何在swift中做到这一点!

谢谢

3 个答案:

答案 0 :(得分:2)

我使用的代码将基于应用程序的第一次或第二次启动启动viewcontoller。

这在AppDelegate中。

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


let firstLaunch = defaults.boolForKey("FirstLaunch")

if firstLaunch  {
    print("Not first launch.")

    } else {

    }
    self.window = UIWindow(frame: UIScreen.mainScreen().bounds)

    let storyboard = UIStoryboard(name: "Main", bundle: nil)

    let initialViewController = storyboard.instantiateViewControllerWithIdentifier("navController") as! UINavigationController

    self.window?.rootViewController = initialViewController
    self.window?.makeKeyAndVisible()


}
else {
    print("First launch, setting NSUserDefault.")

    self.window = UIWindow(frame: UIScreen.mainScreen().bounds)

    let storyboard = UIStoryboard(name: "Main", bundle: nil)

    let initialViewController = storyboard.instantiateViewControllerWithIdentifier("firstrunVCstoryboard") as UIViewController

    self.window?.rootViewController = initialViewController
    self.window?.makeKeyAndVisible()

}

return true
}

您需要调整它以适合您的故事板和视图控制器名称。

修改

这是我如何设置第一个视图控制器中的值以指示第一次运行已完成。所以它不会再显示出来。

 self.defaults.setBool(true, forKey: "FirstLaunch")

答案 1 :(得分:0)

无法判断它是否是UIKit框架中内置的第一次启动,但是你可以采用另一种方式。

在AppDelegate.swift中,转到applicationDidFinishLaunchingWithOptions方法(通常是第一个)。现在,添加:

//Check for key "first_launch" in User Defaults
if let _ = NSUserDefaults.standardUserDefaults().objectForKey("first_launch") {

    //Set your own global variable to be true. Then, when your ViewController 
    //loads, do a popup window with that DoctorViewController thingy if the
    //variable is true
    //Example:
    isFirstLaunch = true

    //Then, set "first_launch" to be a value so your app will never call this block again 
    NSUserDefaults.standardUserDefaults().setObject("", forKey: "first_launch")

}

答案 2 :(得分:0)

只需向

发送获取请求即可
http://ip-api.com/json

它将响应完整的设备地理位置数据,包括IP地址。

{
    "status": "success",
    "country": "COUNTRY",
    "countryCode": "COUNTRY CODE",
    "region": "REGION CODE",
    "regionName": "REGION NAME",
    "city": "CITY",
    "zip": "ZIP CODE",
    "lat": LATITUDE,
    "lon": LONGITUDE,
    "timezone": "TIME ZONE",
    "isp": "ISP NAME",
    "org": "ORGANIZATION NAME",
    "as": "AS NUMBER / NAME",
    "query": "IP ADDRESS USED FOR QUERY"
}