簡體   English   中英

目標C首次使用時更改根視圖

[英]Objective C Change the root view in first time use

如果這是他們的用戶第一次使用我的應用程序,我希望它通過幫助向導。 我的計划是查找特定密鑰的用戶默認值。 我的問題是在iPhone應用程序中重新路由初始視圖的最佳方法是什么? 它在應用程序委托中發生嗎? 我必須在第一個視圖控制器中進行重新路由嗎? 我應該在初始視圖的導航控制器中調用setRootView嗎? 是在情節提要中完成的嗎?

我很困惑,想知道是否有一個好的方法?

我使用IOS 5

非常感謝,羅斯

在首次啟動時使用userdefaults鍵時,最好覆蓋AppDelegate中的initialize函數。 這將確保用戶默認密鑰被初始化為正確的值。 例如,在我的一個應用程序中,我想查看它是否是首次啟動,因為我想向用戶顯示一個歡迎視圖控制器。 我使用AppDelegate.m文件中的以下功能進行了設置。

+ (void)initialize
{
    if (![[NSUserDefaults standardUserDefaults] objectForKey:@"showWelcome"])  {

        NSString  *mainBundlePath = [[NSBundle mainBundle] bundlePath];
        NSString  *settingsPropertyListPath = [mainBundlePath
                                               stringByAppendingPathComponent:@"Settings.bundle/Root.plist"];

        NSDictionary *settingsPropertyList = [NSDictionary 
                                              dictionaryWithContentsOfFile:settingsPropertyListPath];

        NSMutableArray      *preferenceArray = [settingsPropertyList objectForKey:@"PreferenceSpecifiers"];
        NSMutableDictionary *registerableDictionary = [NSMutableDictionary dictionary];

        for (int i = 0; i < [preferenceArray count]; i++)  { 
            NSString  *key = [[preferenceArray objectAtIndex:i] objectForKey:@"Key"];

            if (key)  {
                id  value = [[preferenceArray objectAtIndex:i] objectForKey:@"DefaultValue"];
                [registerableDictionary setObject:value forKey:key];
            }
        }

        [[NSUserDefaults standardUserDefaults] registerDefaults:registerableDictionary]; 
        [[NSUserDefaults standardUserDefaults] synchronize]; 
    } 
}

– application:didFinishLaunchingWithOptions:我添加了一個視圖控制器作為根視圖控制器。 我總是喜歡包含一個堅實的“ Root View Controller”來進行任何類型的啟動視圖切換。 在UIWindow子視圖級別執行此操作可能會出現問題。 在RootViewController的– viewDidLoad中,我檢查用戶默認密鑰。

    if ([[NSUserDefaults standardUserDefaults]valueForKey:@"showWelcome"] == [NSNumber numberWithBool:YES]) {
        [self pushViewController:[[WelcomeViewController alloc]init] animated:NO];
    } else {
        [self pushViewController:[[OtherViewController alloc]init] animated:NO];
    }

所有這些都與settings.bundle中的Bool YES / NO開關綁定在一起,允許用戶根據需要再次看到WelcomeController。

設置捆綁

我使用prefs來管理該應用程序是否已預先配置(當然,默認設置為“否”),以及是否未顯示全屏模式對話框,以指導用戶進行配置。

[tabBarController presentModalViewController:configurationController animated:YES];

這也主要是從應用程序委托完成的,但是如果用戶提前中止配置過程等,則可以在其他地方調用它,並且效果很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM