【发布时间】:2015-05-11 12:02:04
【问题描述】:
我正在尝试为我的项目中的导航获取更多通用解决方案,并且我一直想知道 segue 与手动实例化的 VC 的区别。
我这样做的方式是,我在 Storyboard 中拥有从一个视图到另一个集合的所有可能的 segues,并在触摸特定元素时调用它们。
例如:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "showDetail" {
let c = segue.destinationViewController as? DetailVC
let indexPath = self.collectionView.indexPathsForSelectedItems()
let myPath: AnyObject = indexPath[0]
let post = self.myCollection[myPath.item].id
println(post)
controller?.thisPost = post
}
//else do stuff for other identifiers
}
不幸的是,由于有很多控制项允许用户从任何地方调用几乎所有可能的视图,这最终导致 Storyboard 完全混乱。
我真正想要的是完全删除情节提要中的所有转场,并以编程方式调用我的下一个 VC,具体取决于所点击的项目。
即类似于:
var nextVC = self.storyboard?.instantiateViewControllerWithIdentifier("DetailVC") as! DetailVC
let itemToShow = //collectionView selected cell.id
nextVC.thisPost = itemToShow
self.presentViewController(nextVC, animated: true, completion: nil)
在显示视图之前,我实际上一直在配置 nextVC 字符串“thisPost”。与 prepareForSegue 相反,它不允许我访问 nextVC.thisPost。
我是否必须通过协议/委托来执行此操作,因为 VC 尚未配置,或者我只是错过了一个细节?
【问题讨论】:
标签: ios swift uiviewcontroller uistoryboardsegue