识别哪个 segue 触发了 UIViewController
Posted
技术标签:
【中文标题】识别哪个 segue 触发了 UIViewController【英文标题】:Identify which segue triggered UIViewController 【发布时间】:2017-04-28 21:06:40 【问题描述】:我有一个UIViewController
可以从来自其他各种UIViewControllers.
的多个popover segues 访问我需要根据发件人是谁,或者可能取决于segue 标识符来执行一些代码。我想知道是否有一种方法可以在弹出视图中获取此信息,而无需在父视图控制器中使用 prepareForSegue
方法。
我问是因为我的一些控制器非常简单并且完全在 IB 中构建,作为一个懒惰的程序员,我不想为它们创建自定义类。
【问题讨论】:
【参考方案1】:如果唯一的问题是您不想为简单类创建自定义类,请实现 prepareForSegue
并通过检查 segue.identifier 了解触发了哪个 segue。
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
// segue.identifier will give you which segue was triggered. Using this info you can branch out your logic......
【讨论】:
所以没有prepareForSegue就没有办法吗? 可能还有其他方法,但是即使您确实想出了一些将在执行 segue 时调用的方法。所以基本上你会尝试复制一些类似于 prepareForSegue 已经为你做的事情。 :) 写这个问题比为你的视图控制器创建一个自定义类要花更长的时间。您甚至可以创建一个可重用的视图控制器,只需将 segue 名称放入属性中即可。【参考方案2】:使用这个override func shouldPerformSegue(withIdentifier identifier: String, sender: Any?) -> Bool
if identifier == "yourseguename"
// do your stuff and then decide if you want to perform it
return true
return false
【讨论】:
以上是关于识别哪个 segue 触发了 UIViewController的主要内容,如果未能解决你的问题,请参考以下文章
自定义 UITableViewCell:以编程方式触发选择 segue