iOS开之代理传值

来源:互联网 发布:易建联新秀赛季数据 编辑:程序博客网 时间:2024/06/11 06:15

第一界面的视图控制器名字ViewController


第二个界面的控制器叫NextInterfaceViewController



如上两个界面的视图所示 进行的界面间的传值的效果图  即是 点击 nextInerface button按钮 把第一个界面label上的内容 传到后一个界面上的textField上显示   从前一个界面向后一界面传值还可以使用属性传值  更为方便  这里只是为了介绍代理传值 不考虑传值的优越性.

下面是代理传值的具体方法步骤:

//在第一个视图控制器即是ViewController 的.h文件中定义代理与方法 具体代码如下

#import <UIKit/UIKit.h>

@protocol PassTrendValueDelegate


- (void)passTrendValues:(NSString *)values;//1.定义协议与方法 


@end


@interface ViewController :UIViewController

@property (nonatomic,retain)id <PassTrendValueDelegate>trendDelegate;//声明委托变量


@end

//在 nextInerface button按钮的点击事件中设置代理对象 此时是在在第一个视图控制器即是ViewController 的.m文件中 具体实现代码如下

- (void)handleToNextInterface {

    NextInterfaceViewController *nextInterface = [[NextInterfaceViewControlleralloc]init];

    self.trendDelegate = nextInterface;//设置代理对象

    [self.trendDelegatepassTrendValues:self.label.text];

    

    [self.navigationControllerpushViewController:nextInterfaceanimated:YES];

}


//接着在第二个界面  即是在第一个视图控制器即是 NextInterfaceViewController.h文件中  服从协议  实现具体代码如下

@interface NextInterfaceViewController :UIViewController <PassTrendValueDelegate>//服从协议

//最后在第二个界面  即是在第一个视图控制器即是 NextInterfaceViewController.m文件中  实现的具体代码如下:

  

//实现代理中的方法

- (void)passTrendValues:(NSString *)values {

    //self.textField.text = values;

    NSLog(@"%@",values);

    self.view.backgroundColor = [UIColorgreenColor];

    self.textField = [[UITextFieldalloc]initWithFrame:CGRectMake(80,180,180,30)];

    self.textField.borderStyle =UITextBorderStyleRoundedRect;

    [self.viewaddSubview:self.textField];


    self.textField.text = values;

}


按如上操作就能实现第一界面到第二个界面的传值  本没有介绍各个空间的创建  只是单纯的介绍了代理传值  如有不足只处欢迎指正!


0 0