iOS6 使用 Segue 傳輸兩個View Controller 之間的字串資料
Storyboard的設定:
在Scene1 的 TextField 輸入字串 "I love you." 按下按鈕,資料將傳到 Scene 2 的 TextField. 如下圖:
分別為這兩個ViewControllers建立兩個Classes,如下:
--------------------------------------------------------------
SceneOneViewController.h:
#import <UIKit/UIKit.h>
@interface SceneOneViewController : UIViewController
@property (strong, nonatomic) IBOutlet UITextField *SceneOneTextField;
@property (strong, nonatomic) NSString *textOne;
@end
___________________________________________
SceneOneViewController.m:
#import "SceneOneViewController.h"
#import "SceneTwoViewController.h"
@interface SceneOneViewController ()
@end
@implementation SceneOneViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
//Pass data in scene one to text in scene 2
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
SceneTwoViewController *destination = [segue destinationViewController];
destination.text = _SceneOneTextField.text;
}
//Receive data from scene 2 and display in scene 1; the value of var "textOne" should be set in scene 2.m
- (IBAction)returned:(UIStoryboardSegue *)segue {
_SceneOneTextField.text = _textOne;
}
@end
注意:在Storyboard的Scene2 Controller 裡,將按鈕連到下方綠色的小方格(Exit),選擇上述的 IBAction: returned。讓它離開Scene2回到Scene1時,要執行這個動作,如下:
________________________________________________
SceneTwoViewController.h:
#import <UIKit/UIKit.h>
@interface SceneTwoViewController : UIViewController
@property (strong, nonatomic) IBOutlet UITextField *SceneTwoTextField;
@property (strong, nonatomic) NSString *text;
@end
SceneTwoViewController.m:
#import "SceneTwoViewController.h"
#import "SceneOneViewController.h"
@interface SceneTwoViewController ()
@end
@implementation SceneTwoViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
_SceneTwoTextField.text = _text;
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
//Pass the data from scene 2 to textOne
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
SceneOneViewController *destinationVC = [segue destinationViewController];
destinationVC.textOne = _SceneTwoTextField.text;
}
@end
沒有留言:
張貼留言