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

时间:2016-05-08 05:36:05

标签: ios xcode swift

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

我的视图中有一个文本字段,如果用户已在该字段中输入数据,那么我允许他们在按下按钮后导航到下一页,如果文本字段为空,则显示错误消息,看起来很简单吧?不幸的是,我无法想象这一个,在按钮上我创建了一个push segue方法,所以一旦点击它将从视图一到视图二,现在我已经调整了这个函数来检查文本字段是否为空如果是这样的话然后重定向当我单击按钮时我看到错误消息但它仍然重定向?这是我目前的代码:

 @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

    }
}

任何人都可以解释为什么会发生这种情况吗?

2 个答案:

答案 0 :(得分:2)

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

如果文字为空,则需要使用此功能来阻止performSegueWithIdentifier

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

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

答案 1 :(得分:0)

prepareForSegue通知视图控制器即将执行segue。

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

因此,您应该检查shouldPerformSegueWithIdentifier

中的文字是否为空
override func shouldPerformSegueWithIdentifier(identifier: String,sender: AnyObject?) -> Bool {

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