Ios 如何在触发退出序列之前执行操作?
我已经创建了一个从视图控制器a到视图控制器B的序列(以模式显示),该序列通过视图控制器a的导航控制器中的按钮触发。接管的模式用于通过键入电子邮件发送朋友请求。当用户键入电子邮件并按下按钮提交好友请求时,我希望执行由该按钮触发的操作(如果电子邮件存在,则调用服务器发送好友请求并返回成功;如果电子邮件不存在,则返回错误)。如果成功,我想退出/退绕赛段回到A。如果出错,我不想退出/退绕赛段 我已经研究过这个问题,但它似乎没有实现我所需要的。我正在尝试以下方法:Ios 如何在触发退出序列之前执行操作?,ios,swift,Ios,Swift,我已经创建了一个从视图控制器a到视图控制器B的序列(以模式显示),该序列通过视图控制器a的导航控制器中的按钮触发。接管的模式用于通过键入电子邮件发送朋友请求。当用户键入电子邮件并按下按钮提交好友请求时,我希望执行由该按钮触发的操作(如果电子邮件存在,则调用服务器发送好友请求并返回成功;如果电子邮件不存在,则返回错误)。如果成功,我想退出/退绕赛段回到A。如果出错,我不想退出/退绕赛段 我已经研究过这个问题,但它似乎没有实现我所需要的。我正在尝试以下方法: class BViewControlle
class BViewController: UIViewController {
// The button function
@IBAction func sendFriendRequest(sender: AnyObject) {
println("Button Function.")
self.performSegueWithIdentifier("SendFriendRequest", sender: self)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "SendFriendRequest" {
println("Preparing for segue.")
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
然后在第一视图控制器中:
AViewController: UIViewController {
// The unwind function
@IBAction func saveFriendRequest(segue:UIStoryboardSegue) {
println("Finished the segue.")
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
这是当我为按钮设置退出顺序(ctrl键将按钮拖动到ViewController中的“退出”)时的结果,我按以下顺序得到调用:
Preparing for segue.
Finished the segue.
Button Function.
但是,我不一定每次都要调用prepareForSegue或unwind函数,只要服务器发出成功消息。那么,我如何将情节提要中的内容连接起来,以便在调用performsguewithidentifier时,不必调用其他函数(prepareforsgue等)?如果要在segue之前执行操作,请创建确定操作已成功完成的If语句,然后执行segue。即
if (ActionSuccess) {
self.performSegueWithIdentifier("Segue", sender: nil)
}
从按钮中删除退出序列,只需将按钮链接到新的iAction并插入即可
self.dismissViewControllerAnimated(true, completion: nil)
因此,您的新代码将是:
@IBAction func saveFriendRequest(sender: AnyObject) {
//Do your stuff to save the friend request
self.dismissViewControllerAnimated(true, completion: nil)
}
是的,这是必要的,很抱歉没有澄清这一点。如果不将按钮连接到视图控制器上的出口,我如何使segue工作,因为通过连接按钮,它会在执行按钮操作之前执行prepareForSegue和unwind?感谢您的帮助,这正是我所需要的!