我是iPhone開發新手。在使用導航欄時,如何將view2中的字符串值傳遞給view1。我使用pushviewcontroller將字符串值從view1傳遞到view2到view3,但沒有問題但是當我使用導航欄的Back按鈕回到之前的視圖時,我無法保存字符串值。 我需要你的幫助來解決這個問題。如何使用導航欄將view2中的值返回到view1
在此先感謝
我是iPhone開發新手。在使用導航欄時,如何將view2中的字符串值傳遞給view1。我使用pushviewcontroller將字符串值從view1傳遞到view2到view3,但沒有問題但是當我使用導航欄的Back按鈕回到之前的視圖時,我無法保存字符串值。 我需要你的幫助來解決這個問題。如何使用導航欄將view2中的值返回到view1
在此先感謝
如果將當前類的引用傳遞給下一個類並通過使用此引用更改值,則可以輕鬆完成此任務。
喜歡: 要推送的類。
@interface B:UIViewController{
id delegate;
}
@property (nonatomic,retain) id delegate;
@end
@implementation B
@synthesize delegate;
-(void)methodA{
[delegate setNewString2:@"Madhup"];
}
@end
從中你是推B中的類:
@interface A:UIViewController{
NSString *newString;
}
@property (nonatomic,retain) NSString *newString;
@end
@implementation A
@synthesize newString
- (void)method2{
B *newBObject = .......;
[newBObject setDelegate:self];
[self.navigationController pushViewCo.......];
}
@end
希望這有助於。
有做到這一點的方法不止一種。這裏有幾個:self.navigationController.viewControllers
可以達到以前的視圖控制器(即推一:
您可以通過導航控制器的viewControllers屬性來訪問所有視圖控制器的導航堆棧當前控制器導入堆棧)通過parentViewController屬性:self.parentViewController
您可以使用委託模式,其中前一個(父)視圖控制器將成爲當前(子)控制器的委託。
您可以在父控制器中保留對子控制器的引用(保留)。
在前3個,子控制器將負責將數據交給父控制器。在第四次,父母會在釋放之前從孩子那裏獲取數據。
感謝Can Berk, 我使用委託模式處理了MVC的工作。感謝您的快速回復 – 2010-05-27 12:32:20
不客氣。 – 2010-05-27 14:36:07
感謝馬杜, 你已經完成了我的工作。你的勺子餵養幫助我瞭解一些基本的圖案樣式。 – 2010-05-27 12:30:53
@Anil Kumar:勺子餵養只對新手提供 – 2010-05-27 13:13:49
@property(nonatomic,retain)id delegate;保留正確或應該分配。它有什麼不同? – 2012-08-23 06:44:56