您有一个应用程序,使用以下命令向父级添加多个子视图(UIViews):
if let page:UIViewController = self.storyboard?.instantiateViewControllerWithIdentifier("recentVC") as? RecentViewController {
page.view.frame = self.frame
scrollView.addSubview(page.view)
}
在RecentViewController中,我有许多元素(标签,图像视图等)。我想从父视图控制器设置这些。这是否可能,如果有的话,是否有任何资源?
我一直在搜索,但我只能在使用segue时找到信息。
由于
答案 0 :(得分:1)
由于您使用的是storyboard,您可以通过将它们从storyboard拖动到视图控制器类来为RecentViewController中的视图创建引用插座。然后,您可以直接访问这些属性,如下所示:
if let page = self.storyboard?.instantiateViewControllerWithIdentifier("recentVC") as? RecentViewController {
page.view.frame = self.frame
page.someChild.image = someImage // raw example
self.recentViewController = page
scrollView.addSubview(page.view)
}
答案 1 :(得分:0)
您完成了大部分工作,在父视图控制器中创建属性以保留子视图控制器。
if let page = self.storyboard?.instantiateViewControllerWithIdentifier("recentVC") as? RecentViewController {
page.view.frame = self.frame
self.recentViewController = page
scrollView.addSubview(page.view)
}
现在,您可以使用self.recentViewController.<childControl>
访问子视图控制器中的任何内容。
重要提示:设置此类父子关系时,应使用Creating Custom Container View Controllers
中的方法if let page = self.storyboard?.instantiateViewControllerWithIdentifier("recentVC") as? RecentViewController {
self.recentViewController = page
self.addChildViewController(page)
page.view.frame = self.frame
scrollView.addSubview(page.view)
page.didMoveToParentViewController(self)
}
我知道这看起来很神秘且不必要,但它将来会阻止奇怪的几乎无法追查的问题。
哦,如果你需要删除子视图
self.recentViewController.willMoveToParentViewController(nil)
self.recentViewController.view.removeFromSuperview()
self.recentViewController.removeFromParentViewController()