2013-07-18 114 views
1

條件開始(首先,讓我道歉,如果這是一個很瑣碎的問題。我剛剛開始使用的iOS和Objective-C)的應用程序/查看

我正在使用iOS 6應用這需要經過驗證的用戶帳戶才能工作。註冊分爲兩階段:用戶首先必須註冊他/她的姓名和電話號碼,然後應用程序將聯繫後端服務,後端服務將通過SMS向用戶發送驗證碼。然後用戶必須將該代碼輸入到應用程序中。當所有這些完成後,用戶終於可以開始使用該應用了。

我的問題是這樣的:由於註冊是唯一一次的過程,在視圖方面設計流程的最佳方法是什麼?我目前的解決方案是基於「飛濺視圖」,該視圖確定用戶在註冊過程中的位置(未創建,未驗證或完成),然後加載正確的視圖。然而,這確實感覺有點麻煩,因爲我真的創建了一個我立即被解僱的視圖。

編輯:作爲一個後續問題:如果我目前的解決方案是可行的,什麼方法將放置邏輯的最佳位置?截至目前它居住在viewDidLoad

+0

爲了您的編輯,它完全取決於您想要實現的應用程序和功能。對於細節,請參考蘋果的文檔或內容:HTTP://stackoverflow.com/questions/1579550/uiviewcontroller-viewdidload-vs-viewwillappear-what-is-the-proper-division-of –

+0

檢查,這也: - HTTP:/ /stackoverflow.com/questions/5630649/what-is-the-difference-between-viewwillappear-and-viewdidappear –

+0

@Piyush謝謝你的鏈接,我會看看。 –

回答

1

您可以用這種方式移動。

使根視圖控制器就像啓動畫面一樣。在根視圖 控制器,只需檢查應用程序是第一次運行還是第 (成功註冊後)。如果應用程序正在運行 第一次,引導用戶進入註冊頁面,如果用戶已經 成功註冊,將用戶導航到主屏幕(或您的 所需的屏幕)。


要檢查應用程序是否正在第一次運行,您可以使用NSUserDefault

+0

謝謝你的回覆。你有這方面的消息嗎?還是來自個人經驗?如果其他人回答不同的解決方案,我會保持接受。 –

+0

那麼,這是我自己的邏輯,我已經在我開發的許多應用程序中使用過。我看到有人使用相同的。而且我不會有任何問題持續接受。 –

+0

好,太好了。再次感謝。 –

0

我使用下面的代碼來獲得當前的狀態,然後加載所需的視圖中,檢查是否有幫助:

-(NSString *)get_provision_status{ 
NSString *status; 
NSUserDefaults *prefrences = [NSUserDefaults standardUserDefaults]; 
status=[prefrences stringForKey:@"PROVISION_STATUS"]; 
if ([status isEqualToString:@"(null)"] || [status rangeOfString:@"(null)"].location!=NSNotFound) 
{ 
    status=[NSString stringWithFormat:@""]; 
    return status; 
} 
else 
    return status; 
} 




-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    /*Process for check current provision status*/ 
    current_status=[self get_provision_status]; 
if ([current_status isEqualToString:@""] || [current_status rangeOfString:@"(null)"].location!=NSNotFound) { 
    NSLog(@"First Time View"); 
} 

else if ([current_status isEqualToString:@"PROVISION-COMPLETED"]) { 
    NSLog(@"Home Screen Or view When provision completed"); 

} 
    else 
    { 
     NSLog(@"Handle any other conditions if you have"); 
    } 
    self.window.rootViewController = self.navController; 
    [self.window makeKeyAndVisible]; 
    return YES; 

}

1

可以使用NSUserDefault來檢查你的應用程序是否正在運行第一次與否.. 如果它是第一次獲取值保存它並移動到下一個視圖。

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
if (![defaults objectForKey:@"firstRun"]) 
    [defaults setObject:[NSDate date] forKey:@"firstRun"]; 

[[NSUserDefaults standardUserDefaults] synchronize]; 

禮貌: - https://stackoverflow.com/a/1664275/1865424

我認爲這將幫助你。

+0

謝謝。我正在尋找這個解決方案(類似的答案昨天提交,所以「接受」去那裏雖然)。 –

+0

@KGChristensen它確定..如果你需要任何幫助進一步ping我。 – Shivaay