iOS中
页面间传值有八大传值方式,下面就多了解下页面间常用的五种传值方式:
一:属性传值
属性传值是我最先接触到的传值方式,也是目前使用比较多得,为什么呢?感觉比较容易理解。
一个对象有属性,那么当然就可以把他的属性传到其他地方使用。属性传值需要注意的是在多个页面之间传值,地址的问题,最后我们的值都是从地址源取过来的。这种方法只适用于上一个页面推到下一个页面。如果需要传递很多值的时候,并且在多个页面之间传值,那么属性传值就变得不容易了。
二:代理传值
首先我们需要定义一个协议,然后声明代理
通常格式为@property(nonatomic, assign)id<protocol_name> delegate;
例如:@property (assign, nonatomic) id<ChangeTextViewDelegate> delegate;
这个delegate只有遵循了ChangeTextViewDelegate才具备代理资格,然后还有个规则是要实现他的方法,当然分为必须实现,和可选实现 (@required方法是必须得,@optional的方法是可选的)
代理的定义也就OK了,接下来是使用
比如在另外一个类BHangeTextViewController里面
还记得self.tableView.delegate = self吧;这是我们使用比较多的,首先在这个类上我们遵循这个协议@interface BHangeTextViewController()<ChangeTextViewDelegate> 现在我们这个BH类里面就可以制定谁为ChangeTextViewDelegate代理了
关于代理传值
1,首先在传出的地方.h文件中定义协议和方法
2,同样是在这里声明一个代理属性
3,.m中实现@synthesize delegate ;(可选)
4,在需要触发传值的方法中调用协议中的方法,传入要传得值
5,以上全是值传出的地方代号AClass,下面是传入的地方代号BClass
6,在接收得地方interface接口处挂上前面定义的协议(使用协议)
7,这时候就该找个代理了,在BClass中初始化AClass 如:aObject= [[AClass alloc]init];
8, 这步完成再 aObject.delegate = self;(aObject的代理是BClass) 这样就完成了 定义协议 声明代理 使用代理
8,接下来我们就能调用协议中定义的方法了利用这个方法进行参数传递