我正在检查我的标签和图像(图像是否与标签相关联,因此只需检查标签)以查看用户是否可以继续操作。如果他填写了所有细节(使用pickerView和datePicker),用户可以继续。其他用户会收到提醒以填写详细信息并应保持在同一页面上。
以下是我正在使用的代码。一切正常,但应用程序在收到警报后执行不需要的segue。
不需要的问题有两种类型:
基本上问题是,
我只是希望它在警报后留在当前视图控制器(选择器视图选择页面)。我究竟做错了什么?
代码如下:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (xLabel.text! != "" && yLabel.text! != "") {
var user = PFUser.currentUser()
var myGender: AnyObject! = user["gender"]
var myName: AnyObject! = user["name"]
var DestView : UserDetailViewController = segue.destinationViewController as UserDetailViewController
DestView.uDetailName = "\(myName)"
DestView.uDetailGender = "\(myGender)"
DestView.uDetailBar = "\(xLabel.text!)"
DestView.uDetailDate = dateLabel.text!
DestView.uDetailBarPic = PickerViewImage.image!
DestView.uDetailQuantity = "\(yLabel.text!)"
} else {
self.displayAlert("Could not proceed", error: "Please select 'Location' and 'Number of people' to proceed")
}
}
func displayAlert(title:String, error:String) {
var alert = UIAlertController(title: title, message: error, preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "OK", style: .Default, handler: { action in
self.dismissViewControllerAnimated(true, completion: nil)
}))
self.presentViewController(alert, animated: true, completion: nil)
}
我真的很感谢你的帮助。感谢。
答案 0 :(得分:1)
prepareForSegue
对于是否应该执行segue做出决定为时已晚 - 此时segue已经提交。
您应该实现函数shouldPerformSegueWithIdentifier
。您从此函数返回一个布尔值,指示您是否希望segue继续。
override func shouldPerformSegueWithIdentifier(identifier: String!, sender: AnyObject!) -> Bool {
if (xLabel.text! != "" && yLabel.text! != "") {
return true
} else {
self.displayAlert("Could not proceed", error: "Please select 'Location' and 'Number of people' to proceed")
return false
}
}