Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在触发退出序列之前执行操作?_Ios_Swift - Fatal编程技术网

Ios 如何在触发退出序列之前执行操作?

Ios 如何在触发退出序列之前执行操作?,ios,swift,Ios,Swift,我已经创建了一个从视图控制器a到视图控制器B的序列(以模式显示),该序列通过视图控制器a的导航控制器中的按钮触发。接管的模式用于通过键入电子邮件发送朋友请求。当用户键入电子邮件并按下按钮提交好友请求时,我希望执行由该按钮触发的操作(如果电子邮件存在,则调用服务器发送好友请求并返回成功;如果电子邮件不存在,则返回错误)。如果成功,我想退出/退绕赛段回到A。如果出错,我不想退出/退绕赛段 我已经研究过这个问题,但它似乎没有实现我所需要的。我正在尝试以下方法: class BViewControlle

我已经创建了一个从视图控制器a到视图控制器B的序列(以模式显示),该序列通过视图控制器a的导航控制器中的按钮触发。接管的模式用于通过键入电子邮件发送朋友请求。当用户键入电子邮件并按下按钮提交好友请求时,我希望执行由该按钮触发的操作(如果电子邮件存在,则调用服务器发送好友请求并返回成功;如果电子邮件不存在,则返回错误)。如果成功,我想退出/退绕赛段回到A。如果出错,我不想退出/退绕赛段

我已经研究过这个问题,但它似乎没有实现我所需要的。我正在尝试以下方法:

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?感谢您的帮助,这正是我所需要的!