使用全局变量

时间:2017-02-15 00:52:27

标签: ios objective-c uialertcontroller

我正在调用一个带有2个文本字段的UIAlertController(在Obj-C中)。我已经定义了我需要在警报中使用的全局UITextField,因为我需要利用UITextFieldDelegate。

我的文本字段在.h文件中定义。

@property (nonatomic, strong) UITextField *nameField;
@property (nonatomic, strong) UITextField *phoneField;

有没有办法重新编写addTextFieldWithConfigurationHandler块:

[alert addTextFieldWithConfigurationHandler:^(UITextField *myField) {
        myField.delegate = self;
    }];

是这样的......我可以在哪里指定我之前定义的文本字段在这个块中使用?

[alert addTextFieldWithConfigurationHandler:^(**nameField**) {
            nameField.delegate = self;
        }];

我要做的是:

- (void)textFieldDidBeginEditing:(UITextField *)textField {
    if (textField == nameField) {
        phoneField.text = @"";
    }

    if (textField == phoneField) {
        nameField.text = @"";
    }
}

如果一个字段有文本,另一个字段应为空白。它在alertview之外工作没有任何问题......但是在块中,它不会清除其他字段。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

将全局变量指定为块内的指针

[alert addTextFieldWithConfigurationHandler:^(UITextField *aTextField) {
        GLOBAL_VARIABLE = aTextField;//<- pointer
        aTextField.delegate = self;
    }];

然后你可以在回调中正确使用你的条件。

注意:将GLOBAL_VARIABLE替换为您的全局变量