Eva*_*rad 40 ios uicontainerview swift
我有一个容器视图,我弹出了我的故事板.有一个很棒的小箭头代表嵌入到另一个场景的segue.该场景的顶级对象由自定义控制UIViewController.我想调用一个在我的自定义类中实现的方法.如果我可以访问容器,我如何获取内部的参考?
ABa*_*ith 96
您可以使用prepareForSegue一种方法UIViewController来访问UIViewController当前视图控制器中任何被embed拦截的内容,包括segues.
从以下文档prepareForSegue:
此方法的默认实现不执行任何操作.当需要将相关数据传递给新视图控制器时,视图控制器会覆盖此方法.segue对象描述了转换,并包括对segue中涉及的两个视图控制器的引用.
在您的问题中,您提到需要在自定义视图控制器上调用方法.这是一个如何做到这一点的例子:
1.给你的嵌入segue一个标识符.您可以在Interface Builder中选择segue,转到Attributes Editor并查看Storyboard Embed Segue.

2.创建类如下的类:
保留引用,embeddedViewController以便myMethod稍后调用.它被声明是一个隐式解包的可选项,因为给它一个非零的初始值是没有意义的.
// This is your custom view controller contained in `MainViewController`.
class CustomViewController: UIViewController {
func myMethod() {}
}
class MainViewController: UIViewController {
private var embeddedViewController: CustomViewController!
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let vc = segue.destination as? CustomViewController,
segue.identifier == "EmbedSegue" {
self.embeddedViewController = vc
}
}
// Now in other methods you can reference `embeddedViewController`.
// For example:
override func viewDidAppear(animated: Bool) {
self.embeddedViewController.myMethod()
}
}
Run Code Online (Sandbox Code Playgroud)
3.UIViewControllers使用Identity Inspector设置IB中的类.例如:

现在一切都应该有效.希望有所帮助!
| 归档时间: |
|
| 查看次数: |
31249 次 |
| 最近记录: |