如何停止跳转到下一个视图控制器? (swift)

How can stop to jump next view controller? (swift)

我正在使用 segue 将数据从 viewController 发送到 destinationViewController。我设置按钮并使用 push segue 连接到下一个视图控制器。在第一个视图中,我设置了一个布尔值来检查图像是否为空。如果有空的,它会弹出警报提醒用户。如果成功,它会将图像发送到下一个视图控制器。

虽然我可以传输图像并弹出警报,但如果有任何空白,它也会跳转到下一个视图控制器。此外,警报是在跳转到下一个视图控制器后弹出的,而不是在第一个视图控制器中

现在,这是代码

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    if Jumpsuit.isHidden == false && self.Hair.image != nil && self.Jumpsuit.image != nil && self.Shoes.image != nil {

        let DestViewController : ChooseBGViewController = segue.destination as! ChooseBGViewController

        DestViewController.imgHair = Hair.image
        DestViewController.imgJumpsuit = Jumpsuit.image
        DestViewController.imgShoes = Shoes.image
        DestViewController.dressingtype = 1
    } else if Jumpsuit.isHidden == false && self.Hair.image == nil || self.Jumpsuit.image == nil || self.Shoes.image == nil {
        let alert = UIAlertView()
        alert.title = "No Image"
        alert.message = "Please check again"
        alert.addButton(withTitle: "OK")
        alert.show()

    }
}

如何停止跳转到下一个视图控制器并在第一个视图控制器中弹出警报。请帮忙!

您可以使用 shouldPerformSegue(withIdentifier:sender:) 和 return Bool 值根据您的条件。

override func shouldPerformSegue(withIdentifier identifier: String, sender: Any?) -> Bool {
    if Jumpsuit.isHidden == false && self.Hair.image == nil || self.Jumpsuit.image == nil || self.Shoes.image == nil {
         //Show UIAlertController instead of UIAlertView it is deprecated
         return false
    }
    return true
}

当用户点击按钮时,您将使用 IBAction 首先检查您需要的内容(图像..),然后您可以使用 2 种方法:

  1. 您现在可以使用 performSegue 这将触发已知的 prepareForSegue 并使用您创建的 segue
  2. 您可以使用 instantiateViewController(withIdentifier: 方法如下(并且不要忘记断开连接):

    let nextVC = storyboard?.instantiateViewController(withIdentifier: "YourViewControllerID")
    self.present(nextVC!, animated: true, completion: nil)
    

    或者如果您有导航控制器:

    self.navigationController?.pushViewController(nextVC!, animated: true)