IOS开发UI篇-使用委托代理在两个界面间传值

1.在Main.storyboard里面添加一个UINavigation Controller。 然后把它的rootViewController设置为ViewController。

创建一个TwoViewController。在ViewController里面点击按钮,跳转到TwoViewController。

当ViewController点击发送按钮的时候,把当前页面的TextField里面的数据发送给TwoViewController,并显示在它的TextField上。

IOS开发UI篇-使用委托代理在两个界面间传值_第1张图片

2.在ViewController.h里面添加代理的声明

@protocol ViewControllerDelegate <NSObject>

- (void)changeText:(NSString *) currentview;

@end

3.在ViewController.h里面添加一个代理的变量

@property (nonatomic,strong)id <ViewControllerDelegate> delegate;

4.进入ViewController.m里面添加按钮的点击处理函数

- (IBAction)sendBtnClick:(id)sender {
    
    //1.获取当前的所有的viewController
    NSArray * viewArray = [self.navigationController viewControllers];
    
    //2.获取到TwoViewController对象
    TowViewController * towVC = (TowViewController *)viewArray[1];
    
    //3.把当前对象的委托设置为要跳转的TowViewController对象
    self.delegate = towVC;
    
    //4.掉用代理方法
    [self.delegate changeText:self.textView.text];


}


5.进入TwoViewController.h 添加代理

#import "ViewController.h"
@interface TowViewController : UIViewController <ViewControllerDelegate>

@end

6.在TwoViewController.m里面实现代理,获取到了传入的值

- (void)changeText:(NSString *)text
{
    self.recvText = text;
    NSLog(@"recvtext = %@",text);
}

7.在ViewController点击发送按钮的时候,是先掉用的TwoViewControlelr里面相应的代理方法changeText,然后在调用的

viewDidLoad方法。所以可以在viewDidLoad方法里面给TextField赋值。

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    self.textView.text = self.recvText;
    
}


Demo代码

http://www.oschina.net/code/snippet_2290420_54570


你可能感兴趣的:(IOS开发UI篇-使用委托代理在两个界面间传值)