iOS开发-代理传值

2016-08-11  本文已影响0人  小熊iOS开发

代理传值的步骤:

需要传值的界面操作步骤

1.声明代理协议

2.声明代理方法

3.声明一个属性,用来表示当前类对象的代理

4.让代理执行对象的方法,实现界面间从下级界面到上级界面的通讯

接收传值的界面操作步骤:

1.遵循代理协议

2.指定当前的控制器为传值界面控制器的代理

3.实现代理方法

需要传值的界面-SecondViewController

#import <UIKit/UIKit.h>

// 1.声明协议进行传值

@protocol SecondVCDelegate

// 2.通过该协议方法更改上个界面中label.text

- (void)changeLabelText:(NSString*)aString;

@end

@interface SecondViewController :UIViewController

// 3.声明一个属性,用来表示当前类对象的代理

@property(nonatomic,assign) id<SecondVCDelegate> delegate;

@end

- (void)popToFirstVC:(UIButton*)sender

{

[self.navigationController popViewControllerAnimated:YES];

// 4.让代理执行对象的方法,实现界面间从下级界面到上级界面的通讯

if([_delegaterespondsToSelector:@selector(changeLabelText:)]) {

[_delegate changeLabelText:self.textField.text];

}

}

接收传值的界面-FirstViewController

#import "FirstViewController.h"

#import" SecondViewController.h"

 //1.遵循代理协议

@interface FirstViewController() <SecondVCDelegate>

- (void)pushToNextVC:(UIButton*)sender

{

SecondViewController*secondVC = [[SecondViewController alloc]init];

secondVC.labelText=self.label.text;

// 2.指定当前的控制器为secondVC的代理

secondVC.delegate=self;

[self.navigationController pushViewController:secondVCanimated:YES];

}

// 3.实现代理方法

#pragma mark - SecondVCDelegate

- (void)changeLabelText:(NSString*)aString

{

self.label.text= aString;

}

上一篇 下一篇

猜你喜欢

热点阅读