簡體   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