【发布时间】:2017-04-09 06:03:16
【问题描述】:
我有一个页面视图控制器,它使用普通的 UIPageViewController 方法在视图控制器之间进行转换。在其中一个呈现的视图控制器(假设是当前视图控制器)中,我将一个子视图控制器添加到一个名为 containerView 的子视图中,如下所示:
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let child = storyboard.instantiateViewController(withIdentifier: "child")
self.addChildViewController(child)
child.view.frame = self.containerView.bounds
self.containerView.addSubview(child.view)
child.didMove(toParentViewController: self)
视图控制器显示在containerView 中,但它只是半交互式的。例如,假设子视图控制器有一个滑块,它使用滑块的值更新标签。滑动滑块时,滑块将在containerView 内视觉移动,但不会更新标签(连接到滑块的 IBAction 不会运行)。当视图控制器正常呈现时(使用正常 segueing 的全屏),此行为正常工作。
有什么想法吗?
【问题讨论】:
-
这很奇怪...所以在调试中,您的滑块更改的委托方法没有被调用?
-
实际上它确实被触发了,但是标签没有更新。我在滑块 IBAction 中放置了一个断点,它确实被调用了,但是标签的文本不会像视图控制器正常显示时那样更改
label.text = String(slider.value)。我什至尝试更改self.view的背景颜色,并且可以正常工作,只是为了看看是否有效。 -
您需要更多更准确地描述情况以获得好的答案。否则你只是在浪费你刚刚花在赏金上的代表。甚至很难说出问题所在。但是,请注意,多个视图控制器级别(父视图控制器中的视图控制器中的视图)之间的通信是一个非常棘手的问题!我在这里对选项进行了长时间讨论,可能会给您一些想法:stackoverflow.com/a/33458977/341994
标签: ios uipageviewcontroller childviewcontroller