現在要回傳Page2的資料到Page1
1. 首先在SecondPageViewController.h上加入紅色部分的程式碼,我們希望將Page2的資料通過一個Function來傳送。因此採用delegate的機制,將Function建制在Page1上,而傳送的資料變數在page2上。
@protocol Page2Delegate
-(void) passValue:(NSString *)value;
@end
@interface SecondPageViewController : UIViewController
@property (weak, nonatomic) IBOutlet UITextField *Page2TextField;
@property (strong) NSString *dataString;
@property (weak) id<Page2Delegate> delegate;
2. 加入以下程式碼(紅色部分)到SecondPageViewController.m
@implementation SecondPageViewController
@synthesize delegate;
@synthesize Page2TextField;
- (IBAction)backToPage1:(id)sender {
[self dismissViewControllerAnimated:YES completion:^{}];
[delegate passValue:Page2TextField.text];
}
3. 針對TextField,如果有需要處理一下,就比照Page1的做法加入程式碼
- (IBAction)returnEnterPress2:(id)sender {
[Page2TextField resignFirstResponder];
}
4. Page1上的FirstPageViewController.h需要稍加修改,來接受資料
#import "SecondPageViewController.h"
@interface FirstPageViewController : UIViewController <Page2Delegate>
5. 當然FirstPageViewController.m也需要修改
- (void) passValue:(NSString *)value
{
Page1TextField.text = value;
}
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
id secondCon = segue.destinationViewController;
[secondCon setValue:Page1TextField.text forKey:@"dataString"];
[secondCon setValue:self forKey:@"delegate"];
}
6. 完成後的結果如下
到Page2後,修改TextField的內文,就會再傳回到Page1
Page1接收後,顯示結果


沒有留言:
張貼留言