Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 未检测到UITextField更改?_Variables_Swift_Int_Uitextfield_Boolean - Fatal编程技术网

Variables 未检测到UITextField更改?

Variables 未检测到UITextField更改?,variables,swift,int,uitextfield,boolean,Variables,Swift,Int,Uitextfield,Boolean,当文本字段包含整数时,我有两个标志属性应该更改;当文本字段编辑结束时,我有iActions更改标志。当这两个变量都为true时,这些方法应该启用一个按钮。我运行了iOS模拟器,但按钮未启用。我还为这两个文本字段声明了文本字段委托 我是swift的新手,所以请明确回答。此外,我还没有设置任何断点。以下是我目前掌握的代码: var yourWeightFilled = false var calorieNumberFilled = false func textField(textField: U

当文本字段包含整数时,我有两个标志属性应该更改;当文本字段编辑结束时,我有iActions更改标志。当这两个变量都为true时,这些方法应该启用一个按钮。我运行了iOS模拟器,但按钮未启用。我还为这两个文本字段声明了文本字段委托

我是swift的新手,所以请明确回答。此外,我还没有设置任何断点。以下是我目前掌握的代码:

var yourWeightFilled = false
var calorieNumberFilled = false

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
    // Find out what the text field will be after adding the current edit
    let text = (textField.text as NSString).stringByReplacingCharactersInRange(range, withString: string)

    if textField == yourWeightTextField {
        yourWeightFilled = text.toInt() != nil
    } else if textField == calorieNumberTextField {
        calorieNumberFilled = text.toInt() != nil
    }

    return true
}

@IBAction func yourWeightEditingDidEnd(sender: AnyObject) {
    if self.yourWeightFilled && self.calorieNumberFilled {
        self.calculateButton.enabled = true
    }
    yourWeightTextField.resignFirstResponder()
}

@IBAction func calorieNumberEditingDidEnd(sender: AnyObject) {
    if self.yourWeightFilled && self.calorieNumberFilled {
        self.calculateButton.enabled = true
    }
    calorieNumberTextField.resignFirstResponder()
}

UITextField
UIControl
的子类,因此需要调用以响应控制事件。您可以使用
addTarget(quo:action:forControlEvents:)
方法来实现这一点

例如:

weightField.addTarget(self, action:"yourWeightEditingDidEnd:", forControlEvents:.EditingDidEnd);
在您的情况下,当用户完成编辑文本字段时,调用您的操作方法
yourWeightEditingDiEnd()
。这假定字段属性名为
weightField
。在视图控制器的
viewDidLoad()
方法中有一个放置此代码的好位置

还有一个更重要的步骤。您似乎正在实现UITextFieldDelegate,这很好,因为您还需要一个
textFieldShouldReturn(textField:)->Bool
方法来返回true和。例如:

func textFieldShouldReturn(textField: UITextField) -> Bool
{
    textField.resignFirstResponder();
    return true;
}

这反过来会导致.EditingDidEnd控件事件触发,并调用您注册的操作方法。

UITextField
UIControl
的子类,因此需要调用以响应控件事件。您可以使用
addTarget(quo:action:forControlEvents:)
方法来实现这一点

例如:

weightField.addTarget(self, action:"yourWeightEditingDidEnd:", forControlEvents:.EditingDidEnd);
在您的情况下,当用户完成编辑文本字段时,调用您的操作方法
yourWeightEditingDiEnd()
。这假定字段属性名为
weightField
。在视图控制器的
viewDidLoad()
方法中有一个放置此代码的好位置

还有一个更重要的步骤。您似乎正在实现UITextFieldDelegate,这很好,因为您还需要一个
textFieldShouldReturn(textField:)->Bool
方法来返回true和。例如:

func textFieldShouldReturn(textField: UITextField) -> Bool
{
    textField.resignFirstResponder();
    return true;
}

这反过来会导致.EditingDidEnd控件事件触发,并调用您注册的操作方法。

UITextField
UIControl
的子类,因此需要调用以响应控件事件。您可以使用
addTarget(quo:action:forControlEvents:)
方法来实现这一点

例如:

weightField.addTarget(self, action:"yourWeightEditingDidEnd:", forControlEvents:.EditingDidEnd);
在您的情况下,当用户完成编辑文本字段时,调用您的操作方法
yourWeightEditingDiEnd()
。这假定字段属性名为
weightField
。在视图控制器的
viewDidLoad()
方法中有一个放置此代码的好位置

还有一个更重要的步骤。您似乎正在实现UITextFieldDelegate,这很好,因为您还需要一个
textFieldShouldReturn(textField:)->Bool
方法来返回true和。例如:

func textFieldShouldReturn(textField: UITextField) -> Bool
{
    textField.resignFirstResponder();
    return true;
}

这反过来会导致.EditingDidEnd控件事件触发,并调用您注册的操作方法。

UITextField
UIControl
的子类,因此需要调用以响应控件事件。您可以使用
addTarget(quo:action:forControlEvents:)
方法来实现这一点

例如:

weightField.addTarget(self, action:"yourWeightEditingDidEnd:", forControlEvents:.EditingDidEnd);
在您的情况下,当用户完成编辑文本字段时,调用您的操作方法
yourWeightEditingDiEnd()
。这假定字段属性名为
weightField
。在视图控制器的
viewDidLoad()
方法中有一个放置此代码的好位置

还有一个更重要的步骤。您似乎正在实现UITextFieldDelegate,这很好,因为您还需要一个
textFieldShouldReturn(textField:)->Bool
方法来返回true和。例如:

func textFieldShouldReturn(textField: UITextField) -> Bool
{
    textField.resignFirstResponder();
    return true;
}


这反过来会触发.EditingDidEnd控件事件,并调用您注册的操作方法。

谢谢!有一个问题,我是新来的,那么在我写的代码中,哪里是添加这两行代码的合适位置呢!谢谢我在答复中概述了这一点。您很可能应该在viewDidLoad()中执行此操作。好的。谢谢如果我有问题,我会告诉你的。非常感谢!这有帮助!还有一个问题:如果我想在值发生更改时执行此操作(我会将控件事件更改为什么而不是.EditingDidEnd)?谢谢!有一个问题,我是新来的,那么在我写的代码中,哪里是添加这两行代码的合适位置呢!谢谢我在答复中概述了这一点。您很可能应该在viewDidLoad()中执行此操作。好的。谢谢如果我有问题,我会告诉你的。非常感谢!这有帮助!还有一个问题:如果我想在值发生更改时执行此操作(我会将控件事件更改为什么而不是.EditingDidEnd)?谢谢!有一个问题,我是新来的,那么在我写的代码中,哪里是添加这两行代码的合适位置呢!谢谢我在答复中概述了这一点。您很可能应该在viewDidLoad()中执行此操作。好的。谢谢如果我有问题,我会告诉你的。非常感谢!这有帮助!还有一个问题:如果我想在值发生更改时执行此操作(我会将控件事件更改为什么而不是.EditingDidEnd)?谢谢!有一个问题,我是新来的,那么在我写的代码中,哪里是添加这两行代码的合适位置呢!谢谢我在答复中概述了这一点。您很可能应该在viewDidLoad()中执行此操作。好的。谢谢如果我有问题,我会告诉你的。非常感谢!这有帮助!还有一个问题:如果我想在值发生更改时执行此操作,我将如何执行此操作(我将如何更改控件事件而不是.EditingDidEnd)?