从 UIButton 调用 prepareforSegue?

Posted

技术标签:

【中文标题】从 UIButton 调用 prepareforSegue?【英文标题】:Calling prepareforSegue from a UIButton? 【发布时间】:2015-06-11 11:41:38 【问题描述】:

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

我可以直接从按钮调用它吗?比如:

TableView 控制器:

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

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

【问题讨论】:

谢谢。我只有一个问题,UIButton 仅在首先选择单元格时才有效(调用下一个视图并传递数据)。有没有办法在不先选择单元格的情况下从UIbutton 调用performSegueWithIdentifier 【参考方案1】:

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

【讨论】:

再次检查代码我想我发现了问题。 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) if (segue.identifier == "segueExercise") print(segue.identifier) let vc = segue.destinationViewController as! SuggestionDetailViewController if let indexPath = self.tableView.indexPathForSelectedRow() prepareForSegue 使用 indexPathForSelectedRow 进行索引。我已经将索引行放在按钮标签中,但我无法设法将该标签取回prepareForSegue【参考方案2】:

是的,你可以,但你需要重写 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"

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于从 UIButton 调用 prepareforSegue?的主要内容,如果未能解决你的问题,请参考以下文章

如何从按钮外部调用 UIButton 图像上的 UIView 转换?

从 UIButton 中的另一个类调用方法

如何通过 UIButton 变量调用操作

未调用编程 UIButton 操作

从 UIButton 向 ViewController 发送通知

有没有办法在自定义 UIButton 中调用 TouchUpInside 操作?