从UIButton调用prepareforSegue?

时间:2015-06-11 11:41:39

标签: ios swift uitableview uibutton segue

我正试图通过prepareForSegue中的按钮从TableViewController中调出UITableViewCell个功能。

我可以通过按钮调用它吗?类似的东西:

TableViewcontroller:

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!)
}

这太容易了,还是我错过了什么?

3 个答案:

答案 0 :(得分:7)

当您致电PrepareForSegue时(或通过故事板连接两个UIView CTRL - 从第一个performSegueWithIdentifier拖动到第二个UIView),会自动触发

UIView。你无法“手动”称呼它

答案 1 :(得分:0)

是的,你可以,但你需要覆盖prepareForSegue()函数。如果您使用“仅代码”segue,则可以使用此选项,并且可以将其用于将值传递给新视图控制器。例如,这是一个'Roshambo'游戏,它使用三个按钮,一个只有代码,一个有故事板和代码,一个只有故事板。一个prepareForSegue()用于根据调用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"}

答案 2 :(得分:0)

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