[英]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.