2014-10-02 67 views
0

前的背景異步調用WebService的賽格瑞發生數據回來

我有一款iOS應用,我與StoryBoard的UI和AFNetworking建築爲後端。在我的UIViewController我有一些文本框。當用戶點擊提交UIButton我正在對返回XML文件的Web服務進行AFNetworking調用。

問題

我用StoryBoard界面按鈕掛鉤到一個UITableViewController。最初這工作正常,因爲我有UITableViewController內的Web服務調用的代碼。問題是,如果Web服務沒有任何回報,我會得到一個空白的UITableView。所以我將Web服務調用移入UIViewController,以便在按鈕被按下時調用。 OOPS!我在Web服務返回數據之前調用Web服務調用並調用prepareForSegue,因爲它的Asynchronous

我的問題

  • 當您使用故事板從Web服務中獲取數據時,什麼是最好的辦法。我應該在UITableViewController內進行調用,然後返回UIViewController,如果沒有數據或服務返回錯誤。如果是這樣,我該怎麼回去。我試過self.navigationController popViewController,但它在控制檯中出現了一個警告,那就是刪除一個視圖控制器可能會弄亂堆棧。
  • 有沒有一種方法可以控制何時調用segue,並且只有在從Web服務返回數據後才能進行控制?

回答

2

張貼這一步一步的答案,以幫助其他人指出,可能需要這方面的幫助:

Connect the two ViewControllers in Storyboard which will create a segue. 

您只需選擇的第一個視圖控制器(確保的viewController的亮點是一條藍線和然後按CTRL並點擊目標視圖控制器(您想要轉換到的目標視圖控制器)connecting two scenes

中間的圓圈被稱爲segue如果您點擊並去你的在右側的致敬面板上,您將看到:your segue attributes panel

在標識符中輸入您要調用此過渡的名稱:例如myNewPage。

每當你準備好打電話到下一個場景。使用此委託方法來從一個控制器做通到另一個數據或做什麼特別的:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 

    NameOfDestinationController *dataViewController; 
    dataViewController = segue.destinationViewController; 
    if ([segue.identifier isEqualToString:@"nameOfYourSegueIdentifier"]) { 

     dataViewController.variable1 = self.variable1; 
     ... 
    } 
} 

然後在我的情況,我需要觸發SEGUE後我從AFNetworking Web服務調用成功。所以在成功塊我添加了這一行:

[self performSegueWithIdentifier:@"nameOfYourSegueIdentifier" sender:self]; 

它現在完美的工作!