Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.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
Ios 在重定向到另一个视图之前检查textfield是否有值-swift_Ios_Xcode_Swift - Fatal编程技术网

Ios 在重定向到另一个视图之前检查textfield是否有值-swift

Ios 在重定向到另一个视图之前检查textfield是否有值-swift,ios,xcode,swift,Ios,Xcode,Swift,在过去的3个小时里,我一直在学习swift,目前为止,我正在将硬编码数据从一个视图传递到另一个视图。我试图解决的问题如下 我的视图中有一个文本字段,如果用户已在该字段中输入数据,则我允许他们在按下按钮后导航到下一页,如果文本字段为空,则我显示一条错误消息,看起来很简单,对吗?不幸的是,我无法理解这一点,在按钮上,我创建了一个push segue方法,因此一旦单击,它将从视图1转到视图2,现在我已调整此函数以检查文本字段是否为空,如果为空,请不要重定向。但是,当我单击按钮时,我看到错误消息,但它仍

在过去的3个小时里,我一直在学习swift,目前为止,我正在将硬编码数据从一个视图传递到另一个视图。我试图解决的问题如下

我的视图中有一个文本字段,如果用户已在该字段中输入数据,则我允许他们在按下按钮后导航到下一页,如果文本字段为空,则我显示一条错误消息,看起来很简单,对吗?不幸的是,我无法理解这一点,在按钮上,我创建了一个push segue方法,因此一旦单击,它将从视图1转到视图2,现在我已调整此函数以检查文本字段是否为空,如果为空,请不要重定向。但是,当我单击按钮时,我看到错误消息,但它仍然重定向?这是我当前的代码:

 @IBOutlet var txtfield1: UITextField!
 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    if txtfield1.text.isEmpty
    {
        nameLabel.text = "error don't redirect"
    }
    else{

        let newVC: SecondViewController = segue.destinationViewController as! SecondViewController

        let passedPhrase = "redirect to new controller / view"

        newVC.receivedPhrase = passedPhrase

    }
}

有人能解释为什么会发生这种情况吗?

您的代码是正确的,但您需要覆盖此函数
shouldPerformSegueWithIdentifier

如果您的文本为空,您需要使用此选项来防止执行带有标识符的
performsguewithidentifier

override func shouldPerformSegueWithIdentifier(identifier: String?,sender: AnyObject?) -> Bool {

    if txtfield1.text.isEmpty {
        return false
    } 
    return true
}

您的代码是正确的,但需要重写此函数
shouldPerformSegueWithIdentifier

如果您的文本为空,您需要使用此选项来防止执行带有标识符的
performsguewithidentifier

override func shouldPerformSegueWithIdentifier(identifier: String?,sender: AnyObject?) -> Bool {

    if txtfield1.text.isEmpty {
        return false
    } 
    return true
}

prepareforsgue
通知视图控制器即将执行一个序列

使用
shouldPerformSegueWithIdentifier
确定是否应执行具有指定标识符的segue

因此,您应该检查
shouldPerformSegueWithIdentifier

override func shouldPerformSegueWithIdentifier(identifier: String,sender: AnyObject?) -> Bool {

    if txtfield1.text.isEmpty {
        return false
        print("empty")
    } else{
        return true
    }
}

prepareforsgue
通知视图控制器即将执行一个序列

使用
shouldPerformSegueWithIdentifier
确定是否应执行具有指定标识符的segue

因此,您应该检查
shouldPerformSegueWithIdentifier

override func shouldPerformSegueWithIdentifier(identifier: String,sender: AnyObject?) -> Bool {

    if txtfield1.text.isEmpty {
        return false
        print("empty")
    } else{
        return true
    }
}

感谢您的回复,所以您提供给我的这个函数是否替换了我在原始问题中指定的当前函数?您上面的代码是正确的,但您必须添加这个来检查是否应该
performsgue
。它会起作用的。您还遗漏了参数中字符串后面的“?”。好的,我刚刚添加了
:)。感谢您的回复,您提供的这个函数是否替换了我在原始问题中指定的当前函数?您上面的代码是正确的,但您必须添加此项以检查是否应
performSegue
。它会起作用的。您还错过了参数中字符串后面的“?”。好的,我刚刚添加了
:)。