如果不满足条件,怎么能不发生segue?

时间:2016-01-03 12:23:30

标签: ios swift segue

我想在场景之间制作一个条件segue,这样只有在条件满足时才会发生。问题是,当我点击激活此segue的按钮时,它会执行segue而不关心是否满足条件。这是代码:

@IBAction func goonbutton(sender: UIButton) {
    if textFieldRandomWord.text !=nil
    {
        performSegueWithIdentifier("firstsegue", sender: sender)
    } else {
        whateverLabel.text = "You didn't actually write anything."
    }
}

所以我希望segue仅在textFieldRandomWord!= nil时出现。任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:5)

你想要做的是实现:

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

    if identifier == "WhateverYourSegueIsNamed" { // you define it in the storyboard (click on the segue, then Attributes' inspector > Identifier

        if textFieldRandomWord.text.isEmpty == true {
            print("*** NOPE, segue wont occur")
            return false
        }
        else {
            print("*** YEP, segue will occur")
        }
    }

    // by default, transition
    return true
}

我的答案基于这个很好的例子in this related question's answer

答案 1 :(得分:1)

你非常接近。你不想对nil进行测试。相反,您应该测试textField是否为空。

if !textFieldRandomWord.text.isEmpty
{
  performSegueWithIdentifier("firstsegue", sender: sender)
}
else 
{
  whateverLabel.text = "You didn't actually write anything."
}

你可能需要在textFieldRandomWord上添加一个unwrap,如果它是一个可选的,通常是出口。

答案 2 :(得分:0)

问题是,如果textfield为空,它不等于nil,你可以写这个而不应该工作

$scope.submitForm = function () {
  console.log($scope.formData);
  if($scope.formData == null) {
    $scope.error = true; //or //$scope.errorMessage = $emptyContent;
  }
};

写一个空字符串(“”)而不是nil