2014-10-12 56 views
0

我工作的一個應用程序,我想實現將運行應用程序在手機上運行的冷杉時間的教程。我已經設置了NSUserDefaults,並且可以在第一次運行時成功確定並標記應用程序。我現在的問題是從Tutorial View Controller轉到主視圖控制器。創建視圖控制器只能運行應用程序第一次運行的iOS

我的當前設置具有被設置爲根控制器到我的應用的主視圖控制器和我的教程視圖控制器需要被示出和然後駁回僅在第一次應用程序被運行。

什麼是實現它的最好方法是什麼?我正在考慮將其顯示爲Modal視圖,並讓主視圖控制器在檢測到第一次運行時顯示它。有什麼建議麼?

請注意,我沒有使用故事板

回答

0

我要和你在你的根視圖控制器的頂部呈現一個模式的方法去當你發現第一次發射。

使用presentViewController:animated:completion:來顯示它,用動畫:被設置爲NO。這樣它就會出現在根視圖控制器的頂部並覆蓋它。然後,當您完成第一個視圖控制器時,您可以關閉它並在底下顯示您的根視圖控制器。

+0

非常感謝:) – 2014-10-12 11:45:30

+0

我有一個後續問題,如果你不介意的話。我目前正在檢測ViewDidLoad中的FirstLaunch,這是我訪問UserDefaults的地方,然後相應地將我的類中的整數對象設置爲1或0。然後在我的ViewWillAppear中,我創建了檢查這個整數的If條件,我像這樣構建它,以避免每次調用viewwillappear時都必須訪問UserDefaults。你對這種方法有什麼看法?你認爲有一個更好的位置來檢查FirstLaunch嗎? – 2014-10-12 12:22:57

2

簡而言之,請以編程方式選擇您的根視圖控制器。喜歡的東西:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    if ([self isFirstLaunch]) 
    { 
     self.window.rootViewController = [TutorialViewController new]; 
     [self setFirstLaunch NO]; 
    } 
    else 
    { 
     self.window.rootViewController = [MyRegularRootViewController new] 
    } 
    [self.window makeKeyAndVisible]; 

    return YES; 
} 
+0

或者可能是作爲RootViewController的的孩子,使其管理的教程。 – KirkSpaziani 2014-10-12 03:07:38

+0

我打算採用類似的實現方式,但是一旦教程完成後,我很困惑如何切換回到RegularView控制器。 – 2014-10-12 11:46:48

+2

這通常會導致比解決問題更多的問題。視圖控制器層次結構在第一次運行時會比在後續運行時不同。而且,一旦你完成了,你無法擺脫「一次性」的第一個視圖控制器。它堅持應用程序的整個第一次運行,佔用內存,即使它永遠不會再被使用。更好地在正常的根視圖之上顯示「一次性」VC,然後在完成後關閉它。 – 2014-10-12 11:58:31

相關問題