2013-06-11 163 views
2

我有一個tableivew從PLIST中加載...工程好了,我按屏幕頂部的「+」圖標以顯示帶有文本字段的detailview ...我輸入數據在文本字段,並按下一個按鈕,將數據寫入到PList ... plist中被更新,現在我用下面的一行以彈出的觀點:(我這樣做是在DetailView.m)TableView不重新加載/刷新後PopToRootViewController

[self.navigationController popToRootViewControllerAnimated:YES]; 

我有兩種方法,這是從我正在嘗試做的建議:

- (void) navigationController:(UINavigationController *) navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{ 

    [self.tableView reloadData]; 

} 

-(void) navigationController:(UINavigationController *) navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated{ 
    [self.tableView reloadData]; 
} 

我被告知th ese是返回時會觸發的方法,我在Debug中運行,並且它們在返回時不會觸發,我錯過了什麼?如果可以的話,請提供幫助,我將在截止日期前提供幫助,我們將不勝感激。

+0

你是否將「rootViewController」設置爲「navigationController」的代表? – LuisCien

+0

這是在應用程序代表?我的意思是,rootView是MasterViewController,我在MasterViewController.h中實現了navigationController –

+0

是的,我認爲這是問題所在。如果你可以請發佈你的視圖控制器的代碼,你在哪裏創建NavigationController – LuisCien

回答

0

我相信問題是您沒有將您的'rootViewController'設置爲UINavigationController的代表。

爲此,您必須使您的「根視圖控制器」類符合UINavigationControllerDelegate協議。像這樣:

在.h文件:

@interface MyViewController : UIViewController <UINavigationControllerDelegate> 

,然後在.m文件,你必須實現UINavigationControllerDelegate方法(你已經有了)

最後,在某處你類(像viewWillLoad或viewDidLoad中的方法),你必須將其設置爲導航控制器委託,像這樣:

self.myNavigationController.delegate = self; 

我做幾個假設ABO取代你的代碼。只要你張貼更多,我會更新我的答案。

希望這會有所幫助!

+0

謝謝劉易斯更接近 –

0

聽起來好像您正在使用「主 - 細節」設置。如果是這樣,在iPad上,masterViewcontroller和detailViewcontroller沒有連接到同一個導航控制器,所以你列出的兩個UINavigationControllerDelegate方法將不起作用。然而,如果你的設置有他們在同一個navigationController然後要重新加載表(masterVC)的視圖控制器的viewDidLoad方法,您需要添加

self.navigationController.delegate = self; 

,然後在相應的.h文件中你需要做這樣的事情:

@interface MasterViewController : UIViewController<UINavigationControllerDelegate> 
+0

唉,似乎LuisCien打敗了我.. – pnizzle

0

我不認爲你需要這些導航委託方法在所有。相反,在包含該表的視圖控制器中,重新加載viewWillAppear上的數據。

// MyTableContainingViewController.m 

- (void)viewWillAppear:(BOOL)animated { 

    [super viewWillAppear:animated]; 
    [self.tableView reloadData]; 
} 

如果視圖控制器的UITableViewController的子類,重載執行第一時間的視圖被加載,所以我的建議將產生一個額外reloadData的第一次。你可以讓它走或如下所示...

- (void)viewWillAppear:(BOOL)animated { 

    [super viewWillAppear:animated]; 

    if (![self isBeingPresented]) { 
     [self.tableView reloadData]; 
    } 
}