如何在Swift的容器中获取视图?

2020/12/15 23:51 · ios ·  · 0评论

我有一个容器视图,已弹出到故事板中。有一个奇妙的小箭头,代表嵌入到另一个场景中的segue。该场景的顶级对象由custom控制UIViewController我想调用在自定义类中实现的方法。如果我可以访问该容器,该如何获取其中的内容的引用?

您可以使用prepareForSegue中的方法UIViewController,来访问UIViewController当前视图控制器中被embed锁定的任何对象,包括锁定对象。

从有关的文档prepareForSegue

此方法的默认实现不执行任何操作。当视图控制器需要将相关数据传递到新的视图控制器时,它会覆盖此方法。segue对象描述过渡,并包括对segue中涉及的两个视图控制器的引用。

在您的问题中,您提到需要在自定义视图控制器上调用方法。这是一个如何做到这一点的例子:

1.给您的嵌入序列一个标识符。您可以在“界面生成器”中执行以下操作:选择segue,转到“属性编辑器”,然后在Storyboard Embed Segue下查看

在此处输入图片说明

2.创建类,如下所示:

保留引用,embeddedViewController以便myMethod以后可以调用。声明它是一个隐式展开的可选内容,因为给它一个非nil的初始值没有意义。

//  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()
    }
}

3.UIViewControllers使用Identity Inspector设置IB中您的班级例如:

在此处输入图片说明

现在一切都应该正常工作。希望有帮助!

ABaker的答案为父母提供了一个了解孩子的好方法。为了使子代中的代码可以到达父代,请使用self.parent(或在ObjC中使用parentViewController)。

本文地址:http://ios.askforanswer.com/ruhezaiswiftderongqizhonghuoqushitu.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!