美文网首页
iOS 逆向传值

iOS 逆向传值

作者: 进击的小巨牛 | 来源:发表于2017-03-21 16:31 被阅读31次

代理(delegate)、通知(NSNotification),block等等。

1、委托代理delegate只能是一对一之间的。他只能是navigation的栈里面的相邻控制器传值, 不能跨控制器传值。

比如:a到b,b到c.,而不能从c传到a。

@protocol PassValueDelegate

@optional

- (void)VCValuePass:(UIViewController*)VC;

@end

@property(assign,nonatomic)id delegate;

if([self.delegate respondsToSelector:@selector(VCValuePass:)]){

[self.delegateVCValuePass:self];

[self.navigationController popViewControllerAnimated:YES];

}

2、通知(NSNotifacation)

通知的用处就随意多了, 首先他是多对多传值的, 不过要先注册成为监听者,才能收到通知。简单、便捷。不用通知的时候,记得移除

2.1.发出通知 // object通知发布者(是谁要发布通知)userInfo:一些额外的信息(通知发布者传递给通知接收者的信息内容)

NSDictionary* dic =@{ @"name":@"等等", @"sex":@"女"};

NSString* address =@"哥哥";[[NSNotificationCenterdefaultCenter]postNotificationName:@"ValuePass"object:addressuserInfo:dic];

2.2.注册监听对象  name通知的名称。如果为nil,那么无论通知的名称是什么,监听器都能收到这个通知;  Object通知发布者。如果为anObject和aName都为nil,监听器都收到所有的通知

[[NSNotificationCenter defaultCenter] addObserver:selfselector:@selector(receiveValue:)name:@"ValuePass"object:nil];

- (void)receiveValue:(NSNotification* ) notification {

   NSLog(@"%@, %@",notifi.object, notifi.userInfo);

}

在注册成为监听者的页面, 要注意移除通知

- (void)receiveValue:(NSNotification* )notification{

NSLog(@"%@, %@",notifi.object, notification.userInfo);

}

3.1 Block 传值

.h 文件

typedef void (^newBlock)(NSString *);

@interface TwoViewController : UIViewController

// 声明block属性

@property (nonatomic, copy) newBlock block;

@end

.m 文件

- (void)viewWillDisappear:(BOOL)animated

{

[super viewWillDisappear:YES];

if (self.block != nil) {

self.block(@"呵呵");

}

}

3.2 其实用Block 用于回调执行一些方法更方便

使用场景 a 跳转到 b 进行一些事件处理后需要重新回到a ,例如让a 刷新UI,请求数据等等,可以在a 中重写该block 的setter 方法。

相关文章

  • iOS页面间传值详解(二)

    在iOS页面间传值详解(一)中,介绍了iOS界面间的正向传值以及逆向传值的两种方法,其实逆向传值还可以使用bloc...

  • ObJective-C之利用Block逆向传值

    在iOS开发之通过代理逆向传值一文中,分析了利用代理模式来逆向传值,其实还有一些其他的方式,如通知、Block等,...

  • iOS开发之利用Block逆向传值

    在iOS开发之通过代理逆向传值一文中,分析了利用代理模式来逆向传值,其实还有一些其他的方式,如通知、Block等,...

  • iOS 逆向传值

    代理(delegate)、通知(NSNotification),block等等。 1、委托代理delegate只能...

  • ios 常见的几种逆向传值方式

    在iOS开发中,常见的几种逆向传值方式,有代理(delegate)、通知(NSNotification),bloc...

  • iOS中常见的几种逆向传值方式

    在iOS开发中,常见的几种逆向传值方式,有代理(delegate)、通知(NSNotification),bloc...

  • vue逆向传值

    vue返回上个页面逆向传值传多个值

  • iOS开发之通过代理逆向传值

    在iOS开发中,传值是几乎每个App都会用到的,对于传统的顺向传值应该说是比较简单的,但是逆向传值往往会用到代理模...

  • ios开发逆向传值的几种方法整理

    iOS的逆向传值有很多种方法,下面来总结几种常用的传值方式(只贴相关代码): 第一种:代理传值 第二个控制器: 第...

  • iOS Block逆向传值

    逆向传值的方法有很多如代理、通知、block、KVC等等。但是相对来说block是最简单方便的,前提是处理好使用b...

网友评论

      本文标题:iOS 逆向传值

      本文链接:https://www.haomeiwen.com/subject/mwlgnttx.html