iOS学习之页面之间传值的方式总结

本文详细解析了iOS开发中属性传值、代理传值和Block传值三种场景,包括具体步骤和实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

传值三种场景:

 

1.属性传值(从前往后传)

需求:第二个界面标签显示第一个界面输入框文字.

第一步, 在前一个界面定义属性. (语义属性声明为copy);

第二步, 在进入下一个界面之前,给属性传入数据.

第三步, 在后一个界面读取数据.

 

2.代理传值(从后往前传)

需求:

第一步:在后一个界面定义协议;并且定义一个方法,有一个参数,参数类型和传值类型一样;

第二步:定义代理属性.语义特性为assign, 类型为id,并且服从协议.id<xxxdelegate>;

第三步:寻找代理对象,(在push之前)为后一个界面指定代理对象为前一个界面.

第四步:服从对应的协议(直接在.m文件延展后服从);

第五步:实现协议中的方法;

第六步:告诉代理对象什么时候(时机)执行协议中的方法(做安全处理,respondsTo);

 

block传值(从后往前传值)

待完成.

 

 

 

3.间隔多个界面传值: 方式 --- 单例传值(和属性传值类似).

第一步,创建单例类.

第二步:定义创建单例的方法.

+ (Singleton *)mainSingleton;

第三步,定义属性,存储传输的数据.

在.h文件中定义属性
@property (nonatomic, copy) NSString *text;

在.m文件中实现时,要注意加上线程保护.(因为可能会出现单例还没有创建出来的时候,就去执行了访问.单线程可以保证访问之前创建的方法肯定执行完了,也就是单例已经创建出来了.)

static Singleton *single = nil;//保证第一次初始化时,能够将单例创建出来.

+ (Singleton *)mainSingleton {

    @synchronized(self) {

        if (!single) {

            single = [[Singleton alloc] init];

        }

    }

    return single;

}

 

转载于:https://www.cnblogs.com/ErosLii/p/4505263.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值