【发布时间】:2017-07-08 09:23:27
【问题描述】:
我很难找到答案。
我有一个 xib 视图,它位于视图控制器内的滚动视图中。在 xib 中,我有一个带有操作的按钮,我需要转到我的故事板中的视图控制器。我也希望能够使用自定义转场。
到目前为止,我已经读到我可以从情节提要中实例化视图控制器以继续它。但是我不知道如何呈现该控制器。
感谢您的帮助...
更新:
这是我用来执行转场的代码。
在父视图控制器中:
static var referenceVC: UIViewController?
override func viewDidLoad() {
super.viewDidLoad()
print("viewdidload")
LevelSelectViewController.referenceVC = self
setupScrollView()
}
xib 视图文件中的代码
let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "sightWordController")
let parent = LevelSelectViewController.referenceVC!
let segue = InFromRightCustomSegue(identifier: "test", source: parent, destination: vc)
segue.perform()
【问题讨论】:
-
Segues 通常仅限于情节提要使用。您可能必须以某种方式将您的视图(您可以将视图的整个类配置为从 nib 加载)添加到情节提要中,然后您可以将 segue 连接到它。否则,出于某种原因,它们被称为
UIStoryboardSegues。 -
如果您使用可以在代码中分配的自定义 segue,我相信您只需要一个 VC 来执行,这意味着您可以爬上响应者链找到相关的 VC 来执行它。但总的来说,听起来您想要自定义转换和某种委托回调。绝对没有理由让您的代码如此复杂以保持连续性。
-
我刚刚开始工作。我最大的问题是获得对父视图控制器的引用,以便我可以调用 segue。我获得引用的方式有点小技巧,我只是在父视图控制器中创建了一个静态引用变量,我可以在 xib 文件中使用它。有没有更好的方法来获取参考?我将更新问题以显示我的代码。
-
如果您希望引用是通用的(例如常规的 segue),只需爬上响应者链以查看哪个 VC 想要处理/可以处理首先呈现或执行 segue。
-
如果你想/需要不那么通用,你也可以使用委托来通知 VC 一个动作已经发生并且它应该响应。
标签: swift storyboard segue xib