从 UIButton 调用 prepareforSegue?

Calling prepareforSegue from a UIButton?

我正在尝试从 UITableViewCell 中的按钮调用 TableViewController 中的 prepareForSegue 函数。

我可以只通过按钮调用它吗?类似于:

表视图控制器:

func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
        if (segue.identifier == "segueExercise") {
            print(segue.identifier)
        let vc = segue.destinationViewController as! DetailViewController

TableViewCell:

@IBAction func exerciseAction(sender: UIButton) {
    ViewController.prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!)
}

会不会太简单了,还是我漏掉了什么?

PrepareForSegue 会在您调用 performSegueWithIdentifier 时自动触发(或通过 Storyboard 连接两个 UIView CTRL-从第一个 UIView 拖动到第二个 UIView)。你不能称它为 "manually"

是的,你可以,但你需要覆盖 prepareForSegue() 函数。如果您使用 'code only' segue,则使用它,并且可用于将值传递给新的视图控制器。例如,这是一个使用三个按钮的 'Roshambo' 游戏,一个只有代码,一个有情节提要和代码,还有一个只有情节提要。一个 prepareForSegue() 用于 select 根据调用 segue 的按钮传递的值。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let nextController = segue.destinationViewController as! RoshamboViewController
nextController.opponentValue = self.randomRoshambo()
//determine which segue called prepareForSeque
if (segue.identifier == "choosePaper") {
    nextController.playerValue = "paper"}
else if segue.identifier == "chooseScissors"{
    nextController.playerValue = "scissors"}

已解决。我通过 UIButton 选项 tag 传递了索引并替换了 indexPathForSelectedRow.