[英]Reactive cocoa: Stop a RACSignal after UIViewController is dealloc
[英]Enabling an UIButton using Reactive Cocoa RACSignal
我在視圖中添加了一個UIButton
。 我的觀點還有三個文本框即。 用戶名 , 密碼和confirmPassword 。 根據這些文本框的合法內容,我需要啟用我的signUp按鈕。
這是我的代碼片段: -
UIButton *signUp = [[UIButton alloc]initWithFrame:CGRectMake(10, 100, 50, 20)];
signUp.backgroundColor = [UIColor greenColor];
signUp.enabled = NO ;
[self.view addSubview:signUp];
RACSignal *formValid = [RACSignal
combineLatest:@[
username.rac_textSignal,
password.rac_textSignal,
confirmPassword.rac_textSignal
]
reduce:^(NSString *username, NSString *password, NSString *passwordVerification) {
return @([username length] > 0 && [password length] > 8 && [password isEqual:passwordVerification]);
}];
RAC(signUp.enabled) = formValid; //Error is here
在最后一行,我遇到兩個錯誤: -
我是Reactive Cocoa的新手。 請忽略錯誤。
使用RAC(signUp, enabled)
代替RAC(signUp.enabled)
。 RAC
宏至少使用兩個參數,即綁定的對象和keypath。
RAC()
宏至少接受兩個參數,即目標對象和該對象上的有效鍵路徑。
像這樣:
RAC(signUp, enabled) = formValid;
你傳遞的是signUp.enabled
,它是一個單項,恰好是BOOL
,而不是對象。 擴展宏之后, BOOL
被傳遞給期望對象參數的方法,因此編譯器會抱怨:
[[RACSubscriptingAssignmentTrampoline alloc] initWithTarget:signUp.enabled nilValue:<#garbage#>][@keypath(signUp.enabled, nil)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.