代码简化目标C.

时间:2014-07-27 22:41:25

标签: ios objective-c

对,大多数人都很容易。 因此,在健康应用程序中,我有几个用于计算用户BMI的文本字段。我有以下代码操作ALL EACH链接到一个按钮来计算BMI。我们的想法是,如果所有高度字段和权重字段都为空,则应用程序会禁用该按钮。字段链接到cmDisable和feetDisable等...任何人都可以想到更简单的方法吗? 非常感谢

- (IBAction)cmDisable:(id)sender {
    if (((UITextField*)sender).text.length > 0) {
        [_calculateButton setEnabled:YES];
    } else {
        [_calculateButton setEnabled:NO];
    }
}

- (IBAction)feetDisable:(id)sender {
    if (((UITextField*)sender).text.length > 0) {
        [_calculateButton setEnabled:YES];
    } else {
        [_calculateButton setEnabled:NO];
    }
}
- (IBAction)inchesDisable:(id)sender {
    if (((UITextField*)sender).text.length > 0) {
        [_calculateButton setEnabled:YES];
    } else {
        [_calculateButton setEnabled:NO];
    }
}
- (IBAction)kgDisable:(id)sender {
    if (((UITextField*)sender).text.length > 0) {
        [_calculateButton setEnabled:YES];
    } else {
        [_calculateButton setEnabled:NO];
    }
}
- (IBAction)stoneDisable:(id)sender {
    if (((UITextField*)sender).text.length > 0) {
        [_calculateButton setEnabled:YES];
    } else {
        [_calculateButton setEnabled:NO];
    }
}
- (IBAction)poundsDisable:(id)sender {
    if (((UITextField*)sender).text.length > 0) {
        [_calculateButton setEnabled:YES];
    } else {
        [_calculateButton setEnabled:NO];
    }
}

1 个答案:

答案 0 :(得分:1)

因此,如果我理解正确,您希望在所有字段为空时禁用按钮。

您可以做的是将所有按钮添加到Interface Builder的集合中。所以你会有

    IBOutletCollection(UITextField) NSArray *fields;   //Linked to all fields

然后,您将所有字段连接到"编辑结束" UITextFields的操作。该方法需要以下内容:

- (IBAction) fieldsValueChanged:(id) sender {
    BOOL shouldDisable = NO;

    for(UITextField *next in fields) {
        if(next.text.length > 0) {
            shouldDisable = YES;
            break;
        }
    }
    [_calculateButton setEnabled:shouldDisable];
}