ios – 如何在Swift的容器内获取视图? - 代码日志

ios – 如何在Swift的容器内获取视图?

我有一个容器视图,我弹出我的故事板。有一个奇妙的小箭头代表了另一个场景的嵌入。该场景的顶级对象由自定义UIViewController控制。我想调用一个在我的自定义类中实现的方法。如果我有权访问该容器,我该如何获得对内容的引用?
您可以使用UIViewController中的prepareForSegue来访问从当前视图控制器转移到的任何UIViewController,这包括嵌入段。

从关于prepareForSegue的文档:

The default implementation of this method does nothing. Your view controller overrides this method when it needs to pass relevant data to the new view controller. The segue object describes the transition and includes references to both view controllers involved in the segue.

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

给你的嵌入一个标识符。您可以通过选择您的segue,进入属性编辑器并在Storyboard Embed Segue下面,在Interface Builder中执行此操作。

创建你的课程:

一个引用保存到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 prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if let vc = segue.destinationViewController as? CustomViewController
            where 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.使用身份检查器在IB中设置您的UIViewController的类。例如:

现在一切都应该起作用。希望有帮助!

http://stackoverflow.com/questions/29582200/how-do-i-get-the-views-inside-a-container-in-swift

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:ios – 如何在Swift的容器内获取视图?