界面传值
2016-03-13 12:04
281 查看
Block 传值
后一页向前一页传值ViewController先向DetailViewController跳转
DetailViewController页面往ViewController页面传值
1.View.m // View向DetailView跳转的方法中 { DetailViewController *detailVC = [[DetailViewController alloc] init]; [self.navigationController pushViewController:detailVC animated:YES]; // 写个 Block void (^block) (NSString *) = ^(NSString *str){ // str 是DetailView页传过来的值 NSLog(@"传过来的值是: %@", str); }; // 将 block 赋值给 DetailView 的属性 block detailVC.block = block; [detailVC release]; }
2.DetailView.h // 设置 block 的属性 @property (nonatomic, copy) void (^block) (NSString *);
3.DetailView.m - (void)dealloc { // 释放 Block Block_release(self.block); [super dealloc]; } // DetailView向View跳转的方法中 { [self.navigationController popToRootViewControllerAnimated: YES]; self.block(@"这个就是我要传过去的值"); }
segue传值
后一页向前一页传值ViewController先向SecondViewController跳转
SecondViewController页面往ViewController页面传值
1.sec.h // 设置协议 @protocol SecViewControllerDelagate <NSObject> - (void) sendValue: (NSString *) str; @end // 设置代理人属性 @property (nonatomic, assign) id<SecViewControllerDelagate> delegate;
2.sec.m sec 跳转到 view 的点击方法里 [self popoverPresentationController]; [self.delegate sendValue: @"这个是要传的值"];
3.view.m // 签协议, 设置代理人 - (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { SecViewController *secVC = [segue destinationViewController]; secVC.delegate = self; } // 实现协议方法 - (void) sendValue:(NSString *)str { // 打印传过来的 NSLog(@"%@", str); }
属性传值
前一页向后一页传值ViewController向SecondViewController跳转
ViewController向SecondViewController传值
1.sec.h // 第一步:在后一个页面写一个属性,用来接收从另一页面传过来的值 @property (nonatomic, retain) NSString *str; 2.view.m #import "SecondViewController.h" - (void) click: (UIButton *)button { SecondViewController *secVC = [[SecondViewController alloc] init]; // 第二步:把要传过去的内容,通过目标页面属性进行传递 secVC.str = @"要传的值"; [self.navigationController pushViewController:secVC animated:YES]; [secVC release]; }
协议传值
后一页向前一页传值ViewController先向SecondViewController跳转
SecondViewController页面往ViewController页面传值
1.声明协议 sec.h @protocol SecondViewControllerDelegate <NSObject> - (void) sendValue: (NSString *) str; @end 2.声明代理人属性 sec.h @property (nonatomic, assign) id<SecondViewControllerDelegate> delegate 3.触发协议生效 sec.m - (void) click: (UIButton *)button { // 返回前一页 [self.navigationController po 4000 pViewControllerAnimated: YES]; // 触发协议生效 [self.delegate sendValue: self.textField.text(要传的值)]; } 4.签协议 view.m @interface ViewController () <SecondViewControllerDelegate> 5.设置代理人 view.m 的 前一页跳到后一页的方法里 SecondViewController *secVC = [[SecondViewController alloc] init]; secVC.delegate = self; [secVC release]; 6.实现协议方法 - (void) sendValue: (NSString *) str { self.textField.text(接受者)= str; }
相关文章推荐
- 一、冒泡排序
- 一、冒泡排序
- java 定时任务 3种
- tabhost 通过popup跳转activity
- C++实现矩阵压缩
- Log4J日志配置详解
- 检查iOS项目中是否使用了IDFA
- SIM900B GPRS模块————打电话、发短信、接电话
- 手把手教你在好友不知道的情况下,检查哪个微信好友删了你。
- Best practices for the logging REST API
- .Net程序员学习Linux最简单的方法
- 小白逆袭之路
- MySQL中复制数据表中的数据到新表中的操作教程
- Android面试题
- 自定义View实例——雨滴落下
- 深度学习(三十)贪婪深度字典学习
- jquery插件-表单验证插件-validator对象
- SQL Server系统表sysobjects介绍与使用(转))
- 机电传动控制3
- Shell 操作(三)——举例