iOS中传值问题

1.在iOS中正向传值 可以用属性就不多说了,反向传值 从image中传值给controller的时候 我们可以用 代理 Block代码块 还有通知的方法传值
举个例子: A页面push到B页面 现在要从B页面pop回 A页面的时候传值给 A页面

(1).简单说就是从B页面传值给A页面
可以用block传值
在B页面的.h中声明block的函数
block的声明
@1. typedef void(^block函数名)(参数名);
@2. 声明block的属性 用copy 在ARC中用strong也可以 不过苹果官方建议用copy
@3. 为了防止循环引用 在block的 赋值方法中 要用weakself 弱引用

typedef void(^SelectedBlock)(NSString *textname);

@interface textTwoVC : UIViewController

@property (nonatomic, copy) SelectedBlock selectedBlock;

typedef void 是声明一个新的类型 SelectedBlock 是block函数的名字 textname 是传值的内容 当然可以传递多个参数

(2)然后在B页面的.m中 进行传值操作
if (self.selectedBlock) {
self.selectedBlock(@"传值123");
}
判断一个block是否存在 在进行传值

(3)在A页面中接受B页面传过来的值 在A页面需要取值的时候
_texttwoVC.selectedBlock=^(NSString *textStr){
//textStr 就是传过来的值
};
2.通过通知传值
大体的套路和block差不多 就是创建通知中心 进行通知传值 接收通知传来的值
(1)
//获取通知中心单例对象
NSNotificationCenter * center = [NSNotificationCenter defaultCenter];
//添加当前类对象为一个观察者,name和object设置为nil,表示接收一切通知 给object设置名字 只接受和object名字匹配的通知消息
[center addObserver:self selector:@selector(notice:) name:@"ceshi" object:nil];
(2)
//创建一个消息对象
NSNotification * notice = [NSNotification notificationWithName:@"ceshi" object:nil userInfo:@{@"1":@"123"}];
//发送消息
[[NSNotificationCenter defaultCenter]postNotification:notice];
(3)
//在回调的函数中取出通知的值
-(void)notice:(id)sender{
NSLog(@"%@",sender);
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • iOS开发中,页面传值是很常见的,但是页面传值你究竟知道多少呢?笔者这篇文章就是给大家介绍一下页面传值的具体方式,...
    蒲公英少年带我飞阅读 6,533评论 10 45
  • 设计模式 1.delegate和notification什么区别,什么情况使用? 2.描述一下KVO和KVC。 K...
    丶逐渐阅读 5,958评论 3 2
  • iOS网络架构讨论梳理整理中。。。 其实如果没有APIManager这一层是没法使用delegate的,毕竟多个单...
    yhtang阅读 10,685评论 1 23
  • 1.属性传值。 2.block传值。 3.代理传值(delegate) 4.通知传值(notification)。...
    等不来的期待阅读 3,961评论 0 1
  • 现在时间快接近凌晨了,手机的电量只剩下百分之十。随着年龄的增大,我越来越热衷于撕逼。人情是故这块永远都学不会,还是...
    吃一顿吧阅读 1,468评论 0 0

友情链接更多精彩内容