2011-07-16 82 views
0

我有兩個班,一個是addAlarm和第二的名稱,,,Push和Pop行爲很奇怪,爲什麼?

現在我在addAlarm(addAlarm是的UITableViewController的子類),因爲其選擇行,然後它去名稱類,如下

 Name *ob = [[Name alloc] initWithStyle:UITableViewStyleGrouped]; 
     [self.navigationController pushViewController:ob animated:YES]; 

     [ob release]; 
     ob = nil; 

再有就是UINavigationBar的與addAlarm因爲默認情況下後退按鈕,而名字也的UITableViewController

的子類

我發現,當我點擊名稱addAlarm後退按鈕,然後它可以追溯到addAlarm,其viewWillAppear方法調用,但在此之後它調用

  - (void)viewDidUnload 

  - (void)dealloc 
名稱類的

我不明白爲什麼在執行ViewWillApear的addAlarm後,爲什麼要調用Name的方法,任何Idea?

+0

這是預期的行爲。如果你點擊後退按鈕,它應該調用你離開的類的viewDidUnload和dealloc方法。這不是問題。 – Deeps

+0

但是Deeps,如何將數據保存到委託方法並在其他類中顯示,而不在下一個類之前調用​​它的方法? –

+0

這個問題得到解決,然後問題就解決了,在ViewWillApear中,我正在調用[self.tableView reloadData],它現在正在接受更新的數據,因爲數據在dealloc方法中更新了名稱,我應該怎麼做? –

回答

1

而不是在dealloc方法中傳遞數據您可以在下面的方法中傳遞數據。

-(void)viewWillDisappear:(BOOL)animated{ 

} 

另一種方法是將它存儲在如下的appDelegate文件中。

在appDelegate.h文件

NSString *strName; 

@屬性(非原子,保留)的NSString *則strName;

在appDelegate.m文件

@synthesize strName; 

現在,你可以在你的NameController創建應用程序的對象像下面

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 

和存儲值這樣

appDelegate.strName = @"Value to be passed to addAlarm View" 

希望這幫幫我。

+0

謝謝Deeps,我已經解決了我的問題,但是你能告訴我Name對象會自動釋放嗎? –

+0

很好,你解決了。你可以在appDelegate.h文件的dealloc方法中寫[strName release]。 – Deeps

+0

那麼這個代表將在應用程序關閉時在應用程序的最後被調用,直到它將在內存中? –