我正在使用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()
}
}
如何停止跳转到下一个视图控制器并在第一个视图控制器中弹出警报。请帮忙!
答案 0 :(得分:5)
您可以使用shouldPerformSegue(withIdentifier:sender:)
并根据您的条件返回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
}
答案 1 :(得分:0)
当用户点击按钮时,您将使用首先检查您需要的IBAction
(图像..),然后您可以使用2种方法:
您可以按照以下方式使用instantiateViewController(withIdentifier:方法(并且不要忘记断开segue):
let nextVC = storyboard?.instantiateViewController(withIdentifier: "YourViewControllerID")
self.present(nextVC!, animated: true, completion: nil)
或者如果你有导航控制器:
self.navigationController?.pushViewController(nextVC!, animated: true)