4

我是iPhone開發新手。在使用導航欄時,如何將view2中的字符串值傳遞給view1。我使用pushviewcontroller將字符串值從view1傳遞到view2到view3,但沒有問題但是當我使用導航欄的Back按鈕回到之前的視圖時,我無法保存字符串值。 我需要你的幫助來解決這個問題。如何使用導航欄將view2中的值返回到view1

在此先感謝

回答

3

如果將當前類的引用傳遞給下一個類並通過使用此引用更改值,則可以輕鬆完成此任務。

喜歡: 要推送的類。

@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 

希望這有助於。

+0

感謝馬杜, 你已經完成了我的工作。你的勺子餵養幫助我瞭解一些基本的圖案樣式。 – 2010-05-27 12:30:53

+0

@Anil Kumar:勺子餵養只對新手提供 – 2010-05-27 13:13:49

+0

@property(nonatomic,retain)id delegate;保留正確或應該分配。它有什麼不同? – 2012-08-23 06:44:56

2

有做到這一點的方法不止一種。這裏有幾個:self.navigationController.viewControllers

  • 可以達到以前的視圖控制器(即推一:

    1. 您可以通過導航控制器的viewControllers屬性來訪問所有視圖控制器的導航堆棧當前控制器導入堆棧)通過parentViewController屬性:self.parentViewController

    2. 您可以使用委託模式,其中前一個(父)視圖控制器將成爲當前(子)控制器的委託。

    3. 您可以在父控制器中保留對子控制器的引用(保留)。

    在前3個,子控制器將負責將數據交給父控制器。在第四次,父母會在釋放之前從孩子那裏獲取數據。

  • +1

    感謝Can Berk, 我使用委託模式處理了MVC的工作。感謝您的快速回復 – 2010-05-27 12:32:20

    +0

    不客氣。 – 2010-05-27 14:36:07

    相關問題