我正在使用Swift爲iOS開發應用程序。我有兩個視圖控制器;第一個配置應用程序的應用程序(它只能在應用程序首次啓動時出現),第二個視圖控制器將登錄到應用程序。如何避免在swift上打開viewcontroller?
問題是:我想在第一次啓動時顯示「配置控制器」,此後必須出現「登錄控制器」,但我不知道如何執行此操作。我試圖把一個條件放入「配置控制器」來強制第二個(登錄)使它工作。但它不起作用。
你能解釋一下這個話題嗎?
我正在使用Swift爲iOS開發應用程序。我有兩個視圖控制器;第一個配置應用程序的應用程序(它只能在應用程序首次啓動時出現),第二個視圖控制器將登錄到應用程序。如何避免在swift上打開viewcontroller?
問題是:我想在第一次啓動時顯示「配置控制器」,此後必須出現「登錄控制器」,但我不知道如何執行此操作。我試圖把一個條件放入「配置控制器」來強制第二個(登錄)使它工作。但它不起作用。
你能解釋一下這個話題嗎?
您可以使用這段代碼來設置您希望成爲AppDelegate.h啓動時顯示的第一個視圖控制器的視圖控制器。請記住編輯故事板ID爲Main.storyboard您的視圖控制器,並調整相應的字符串
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
let storyboard = UIStoryboard(name: "MainStoryboard", bundle: NSBundle.mainBundle())
let defaults = NSUserDefaults.standardUserDefaults()
var rootViewController : UIViewController;
if (defaults.boolForKey("HasBeenLaunched")) {
// This gets executed if the app has ALREADY been launched
rootViewController = storyboard.instantiateViewControllerWithIdentifier(/*storyboard id of your login controller*/) as UIViewController
} else {
// This gets executed if the app has NEVER been launched
defaults.setBool(true, forKey: "HasBeenLaunched")
defaults.synchronize()
rootViewController = storyboard.instantiateViewControllerWithIdentifier(/*storyboard id of your configuration controller*/) as UIViewController
}
self.window?.rootViewController = rootViewController;
self.window?.makeKeyAndVisible();
return true
}
爲您的應用程序完成啓動和即將顯示其初始視圖控制器此功能,即會叫。爲了更好地理解if檢查的內容,檢查NSUserDefaults的文檔(這是一個非常有用的類)。返回前的最後兩條語句基本上顯示了在if中選擇的視圖控制器。
希望這會有所幫助。
謝謝你,我的朋友。它完美的作品:) – jhuazano 2014-11-08 03:54:42
你可以使用NSUserDefaults或其他的東西來保存你的配置,或者只是保存你的應用程序已經配置好的事實,並在你的appDelegate中執行didFinishLaunchingWithOptions,如果你想加載你想要的控制器,但我的解決方案不使用故事板。
請發佈一個實際的例子,你已經嘗試... – Ajean 2014-11-07 00:10:23