2012-10-08 18 views
0

這聽起來像一個新手問題,但我有一些應用程序,我堅持使用相同的概念。我有3個UIViewController S:3個UIViewControllers中的核心數據

  • 首先是根控制器是UITableView(在另一個 應用集合視圖)
  • 第二種是正常UIViewController表示所選項目的在根控制器的細節
  • 第三個是編輯控制器,我想編輯此對象的內容,爲此我重複使用相同的AddViewController,我用它來添加一個新的對象。

節省很好,沒有錯誤,但是當我從編輯控制器返回到詳細信息之一時,細節仍顯示舊數據。它不會更新數據,直到我再次返回到根目錄。

我需要找到一種方式,以便在從編輯視圖中回熱時更新詳細信息視圖中的數據。這個問題在我現在正在處理的許多應用程序中很麻煩。

任何解決方案,將不勝感激。

回答

1

實現您的目標的最簡單方法如下:在您編輯控制器中,您需要對您的詳細控制器「親愛的細節控制器,我剛剛更新了內容,請刷新!

怎麼辦?設置委託或通知(在兩種情況下,詳細控制器都會響應或偵聽您的編輯控制器),然後對您感興趣的數據執行新的重新請求並更新界面。

P.S.我認爲細節控制器不會更新,因爲您已在其viewDidLoad中執行了請求。我錯了嗎?如果您提供了一些代碼,我們可以幫助您。

希望有所幫助。

+0

嗯,我的問題駐留在執行新的數據請求,如何做到這一點? – TALAA

+0

我解決了這個問題,用viewwillAppear – TALAA

0

好這裏是代碼在根

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    DetailnewViewController *detailViewController = [[DetailnewViewController alloc] initWithNibName:@"DetailnewViewController" bundle:nil]; 
    Card *selectedItem = (Card *)[[self fetchedResultsController] objectAtIndexPath:indexPath]; 
    detailViewController.itcard = selectedItem; 
    detailViewController.managedObjectContext=self.managedObjectContext; 
    detailViewController.view.backgroundColor=[UIColor orangeColor]; 
    [self.navigationController pushViewController:detailViewController animated:YES]; 
    [detailViewController release]; 
    [selectedItem release]; 


} 

這裏didselectrow是代號爲Detailnewviewcontroller &你是對的,我很Excuting請求在viewDidLoad中

- (void)viewDidLoad 
{ 
    cardnumberlabel.text=itcard.CardNumber; 
    namelabel.text=itcard.Name; 
    phonelabel.text=itcard.phonenumber; 
    websitelabel.text=itcard.site; 
} 

謝謝你您的答覆,我會嘗試代表查看c

+0

解決!答案是ViewwillApear,謝謝:) – TALAA