控制器传值
block
传值- 代理传值
- 通知传值
- 沙盒传值
block传值
- 控制器A
UIViewController *vc = [UIViewController new];
vc.myblock = ^(NSString *str){
self.text = str;//控制器A的text赋值为控制器B的time
}
- 控制器B
@property (nonatomic,copy) void(^myblock)(NSString *);
-(void)ButtonTouch{
self.myblock(self.time);//将time赋值为控制器A的str
}
代理传值
- 控制器A
#import "ControllerB"
@interface ControllerA()<ControllerBDelegate> //遵守协议
@end
@implementation ControllerB
- (void)GreatVC{
ControllerB *vc = [ControllerB new];
vc.delegate = self;
}
//代理方法
- (void)setText:(NSString *)str{
self.text = str;//控制器A的text赋值为控制器B的time
}
@end
- 控制器B
@protocol ControllerBDelegate <NSObject> //代理协议
- (void)setText:(NSString *)str;
@end
@interface ControllerB : NSObject
@property (nonatomic,weak) id<ControllerBDelegate> delegate;//代理对象遵守代理协议
@end
@implementation ControllerB
-(void)ButtonTouch{
if ([self.delegate respondsToSelector:@selector(setText)]) {
[self.delegate setText:self.time];//将time赋值为控制器A的str
}
}
@end
通知传值
通过注册通知和监听,进行传值
沙盒传值
将数据存储在
app
的沙盒之中,再从中取出