I have a UIButton added to a view. My view also has three text box viz. username, password and confirmPassword. Based on the legitimate content of these text box, I need to enable my signUp button.
Here is my code snippet :-
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
In the last line, I'm getting two errors:-
I am new to Reactive Cocoa. Please ignore the mistakes.
Use RAC(signUp, enabled) instead of RAC(signUp.enabled). The RAC macro takes at least two arguments, the object and the keypath you are binding.
The RAC() macro takes two arguments at a minimum, the object that's the target and a valid keypath on that object.
Like so:
RAC(signUp, enabled) = formValid;
You're passing it signUp.enabled, which is a single item, and happens to be a BOOL, not an object. After the macro is expanded, the BOOL is passed to a method that expects an object argument, so the compiler complains:
[[RACSubscriptingAssignmentTrampoline alloc] initWithTarget:signUp.enabled nilValue:<#garbage#>][@keypath(signUp.enabled, nil)]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With