繁体   English   中英

使用Reactive Cocoa RACSignal启用UIButton

[英]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

在最后一行,我遇到两个错误: -

  1. ARC不允许将'BOOL'(又名'signed char')隐式转换为'id'
  2. 预期的标识符

我是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM