RACSubject替換代理
需求:
1.給當前控制器新增一個按鈕,modal到另一個控制器介面
2.另一個控制器view中有個按鈕,點選按鈕,通知當前控制器
步驟一:在第二個控制器.h,新增一個RACSubject代替代理。
@interface TwoViewController : UIViewController
@property (nonatomic, strong) RACSubject *delegateSignal;
@end
步驟二:監聽第二個控制器按鈕點選
@implementation TwoViewController
- (IBAction)notice:(id)sender {
// 通知第一個控制器,告訴它,按鈕被點了
// 通知代理
// 判斷代理訊號是否有值
if (self.delegateSignal) {
// 有值,才需要通知
[self.delegateSignal sendNext:nil];
}
}
@end
步驟三:在第一個控制器中,監聽跳轉按鈕,給第二個控制器的代理訊號賦值,並且監聽.
@implementation OneViewController
- (IBAction)btnClick:(id)sender {
// 建立第二個控制器
TwoViewController *twoVc = [[TwoViewController alloc] init];
// 設定代理訊號
twoVc.delegateSignal = [RACSubject subject];
// 訂閱代理訊號
[twoVc.delegateSignal subscribeNext:^(id x) {
NSLog(@"點選了通知按鈕");
}];
// 跳轉到第二個控制器
[self presentViewController:twoVc animated:YES completion:nil];
}
@end
代替代理:其實有2種方法
第一種就是上面用
RACSubject
第二種就是rac_signalForSelector
:監聽某物件有沒有呼叫某方法
這兩種方法的區別:只要傳值,就必須使用RACSubject
下面是第二種方法的用法
- (void)delegate
{
[[_redView rac_signalForSelector:@selector(btnClick:)] subscribeNext:^(id x) {
NSLog(@"控制器知道按鈕被點選");
}];
// RAC:
// 把控制器呼叫didReceiveMemoryWarning轉換成訊號
// rac_signalForSelector:監聽某物件有沒有呼叫某方法
// [[self rac_signalForSelector:@selector(didReceiveMemoryWarning)] subscribeNext:^(id x) {
// NSLog(@"控制器呼叫didReceiveMemoryWarning");
// }];
}
相關文章
- python測試request代理IP是否替換Python
- Mybatis(一)Porxy動態代理和sql解析替換MyBatisSQL
- HTML 替換元素與非替換元素HTML
- Vi替換
- 替換空格
- js replace替換字串,同時替換多個方法JS字串
- 替換橫槓
- linux文字替換Linux
- SQL Server 替換SQLServer
- 替換燈桶
- Linux vi替換字串Linux字串
- vim查詢替換
- 里氏替換原則
- Everspin MRAM替換FRAM
- perl替換特殊字元字元
- vim替換所有字元字元
- centos 替換yum源CentOS
- JS RegExp 替換字元JS字元
- 使用Spring Cloud Gateway 替換 zuul, 並代理註冊在 Nacos 中的微服務SpringCloudGatewayZuul微服務
- Problem 4:替換空格(字串)字串
- js中字串全部替換JS字串
- js replace 全域性替換JS
- 程式等待和程式替換
- winget 替換國內源
- unity 統一替換shaderUnity
- js中字串的替換JS字串
- 前端公共模組替換前端
- idea替換內容快捷鍵 idea怎麼替換掉所選的文字Idea
- 網站程式碼修改替換流程圖,輕鬆掌握程式碼修改替換流程網站流程圖
- 什麼是可替換元素?
- 空元素和可替換元素
- linux-如何快速替換IPLinux
- Spring Alibaba Nacos替換dubbo zookeeperSpring
- javascript的簡單模板替換JavaScript
- grep sed 大批次替換字串字串
- Redis 中使用 scan 替換 keysRedis
- HTML 空元素 And 可替換元素HTML
- vim表示式正則替換
- GCD計時器替換NSTimerGC