2013-04-01 28 views
1

我是iOS開發新手,有點迷路。我的問題是關於一般用戶體驗和具體體系結構建議。如何在需要首次加載屏幕時組織控制器和視圖

基本上我的應用程序應該工作如下:

在第一次啓動它從遠程服務器請求信息,要求用戶位置與GPS。當這些事情發生時,應用程序應該顯示某種帶有進度指示器和文本的首次啓動視圖。第一個問題是:如果用戶無法從遠程服務器下載信息會怎麼樣?這些信息非常重要,沒有它,應用程序就無法繼續工作。我應該只是重試下載?我應該向用戶展示一些MessageBox嗎?在桌面應用程序中,我將向用戶提供兩種選擇 - 重試或退出。在iOS應用程序中退出是不可接受的,所以我應該提供消息框?或者我只需要通過此首次啓動視圖上的文本通知用戶有關問題,並靜靜地重試以下載信息,直至成功爲止?或者創建按鈕「重試」,並讓用戶這樣做?

如果設備提供的用戶位置和下載成功,我需要繼續所有信息。否則用戶必須在繼續之前選擇他的國家和城市。

然後,我有3個標籤具有不同的功能。我已經實現了。

所以我的問題是:如何顯示首次加載視圖和它的控制器?我應該檢查appdelegate初始化方法並將首次加載視圖指定爲主視圖,然後重新分配給常用應用程序UITabbarController(不知道該怎麼做)?或者我需要設置UITabbarController作爲根控制器,並在第一個標籤控制器初始化我應該檢查它是否是第一次啓動,並調用像presentViewController初次視圖控制器?我想在其他地方實現這個檢查,appdelegate是很好的地方,因爲初始化代碼並不屬於第一個標籤控制器。

我創建了具有多個視圖的示例程序,這些視圖由UITabbarController或UINavigationController管理,但我不明白如何自己管理多個視圖,而無需使用幫助控制器。

回答

1

我目前正在開發一個具有類似行爲的應用程序。

我使用UINavigationController作爲根控制器。之後,我有一個視圖控制器和一個UIActivityIndi​​catorView。我在ViewWillAppear方法中啓動動畫,並在ViewDidAppear方法中調用實現遠程調用的方法。

如果通話成功,我進入下一個視圖。

如果通話失敗,我使用UIAlertView通知用戶,他們點擊OK重試。

1

創建一個視圖控制器,在加載數據時顯示爲presentViewController:animated:completion:,並將其顯示在根視圖控制器的viewDidLoad中。

我會使用類似AFNetworking的東西來從服務器進行加載。

NSURL *url = [NSURL URLWithString:@"https://your-url.com"]; 
NSURLRequest *request = [NSURLRequest requestWithURL:url]; 
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { 
    // Dismiss the loading view controller and proceed as normal 
} failure:^(AFHTTPRequestOperation *operation , NSError *error) { 
    // Display an alertView that gives the option to retry 
}]; 
[operation start]; 

請務必將在一個dispatch_async(dispatch_get_main_queue(), ^{});調用的程序段的任何UI更新進行更新發生在主線程。

相關問題