Ios 如何根据字符串值检查UILabel文本?

Ios 如何根据字符串值检查UILabel文本?,ios,swift,boolean,uilabel,Ios,Swift,Boolean,Uilabel,我不是一个很有经验的程序员,所以我很难弄清楚这是否可能,如果可能的话,如何根据给定的字符串值检查标签中的字符串 我希望当半径标签显示“英尺半径”以外的内容时,以及当我的消息文本字段不为空时,启用“添加”按钮 到目前为止,我已经: @IBAction func textFieldEditingChanged(sender: UITextField) { addButton.enabled = !radiuslabel.text == "Radius in feet" &&

我不是一个很有经验的程序员,所以我很难弄清楚这是否可能,如果可能的话,如何根据给定的字符串值检查标签中的字符串

我希望当半径标签显示“英尺半径”以外的内容时,以及当我的消息文本字段不为空时,启用“添加”按钮

到目前为止,我已经:

@IBAction func textFieldEditingChanged(sender: UITextField) {
    addButton.enabled = !radiuslabel.text == "Radius in feet" && !messageTextField.text.isEmpty
}
这个代码是错误的,我一直找不到答案。半径标签由滑块提供信息。 这是滑块功能的代码:

  @IBAction func sliderValueChanged(sender: UISlider) {
    var currentValue = Int(sender.value)
    radiusLabel.text = "\(currentValue)"
}

有没有另一种方法可以在标签的一部分中将半径保持为整数?

请尝试下面的代码行:

@IBAction func textFieldEditingChanged(sender: UITextField) {
addButton.enabled = (!(radiuslabel.text == "Radius in feet") && !messageTextField.text.isEmpty)
}

希望它能帮助您…

您不希望逻辑NOT(
)运算符出现在radiusLabel.text前面。相反,您希望使用“不等于”运算符(
!=

此外,您应该在第二次出现的
UILabel
member
text
上使用可选链接(当您访问member
isEmpty
)。此处比较false,因为它是可选的

addButton.enabled = radiuslabel.text != "Radius in feet" && messageTextField.text?.isEmpty == false
sender
应保持为
UILabel类型



让我们假设您的滑块的值介于
1到10之间
2
表示
英尺的值

因此,根据您的代码,当滑块值更改时,您正在设置radiusLabel中的值

@IBAction func sliderValueChanged(sender: UISlider) {
    var currentValue = Int(sender.value)
    radiusLabel.text = "\(currentValue)"
}
更改消息标签中的值

@IBAction func textFieldEditingChanged(sender: UITextField) {
    addButton.enabled = !radiuslabel.text == "Radius in feet" && !messageTextField.text.isEmpty
}
messageTextField
的值更改时,您实际上正在启用该按钮

您需要的是在滑块值设置为“英尺”或“消息标签”时,立即启用按钮。你需要做的是

func shouldEnableButton()
{
    //Assuming value 2 means value in feet
    addButton.enabled = radiuslabel.text != "2" && (messageTextField.text != nil && !messageTextField.text!.isEmpty)
}

@IBAction func sliderValueChanged(sender: UISlider) {
    var currentValue = Int(sender.value)
    radiusLabel.text = "\(currentValue)"
    messageLbl.text = nil
    self.shouldEnableButton()
}

@IBAction func textFieldEditingChanged(sender: UITextField) {
    self.shouldEnableButton()
}


我尝试了这一行并收到了以下错误:“可选类型‘String’不能用作布尔值;测试“==nil”改为“否,我现在收到一条新的错误消息。”。“可选类型“字符串”的值未展开;您是想使用“!”还是“?”?“生成成功,但在应用程序中移动滑块并在文本框中键入时,无法启用按钮
@IBAction func textFieldEditingChanged(发件人:UITextField)
上面的方法叫什么?这是什么意思?
addButton.enabled=radiuslabel.text!!=“以英尺为单位的半径”&&messageTextField.text?.isEmpty==false
保留发送方参数
发送方:UITextField
@LeoDabus此时您可能应该回答它…我唯一的抱怨是不必要地打开了第一个
文本
@SantaClaus,因为我在手机上写它时没有测试它,所以我不确定它是否需要。我通常更喜欢使用guard打开文本属性。@LeoDabus如果您回答,我将删除我的并更新您的,因为我基本上偷了您的解决方案的可选链接部分…或者是guard let更好…我尝试了这个,我收到了这个错误:“可选类型'String'的值?没有打开;您是想使用'!'还是'?”我以前尝试过不在radiusLabel前面放置任何内容,但收到了相同的错误。我将逻辑NOT运算符放在那里,因为我不确定错误的含义。@K.Airewele我确实更新了我的答案,但大部分功劳必须归于上面的评论员Leo Dabus构建成功,但在我移动滑块并键入消息“我没有与半径对应的文本字段”后,“添加”按钮未启用。我只有一个滑块和一个标签。我的标签是使用界面生成器创建的,起始值为“英尺半径”。我写了一个函数来改变它,当滑块被移动的时候。那么问题到底是什么呢?按照代码,您只需要根据标签文本启用按钮。在使用解决方案时。Add按钮不启用每次更改滑块或消息时都需要调用code方法请解释一下这是什么意思。我有一个带有标签和消息文本字段的半径滑块。消息文本字段不得为空,并且必须移动半径滑块才能启用导航栏中的“添加”按钮。