我有一个带有嵌入式容器视图和控制器的View控制器
Container View托管UIPageViewController View控制器有一个按钮,如果点击它我想更新UIPageView控制器管理的当前显示页面中的标签
我正在使用这种方法获取ContainerView控制器
@IBAction func sendButtonTouched(sender: AnyObject) {
if let vc = self.childViewControllers.last as? ContainerViewController{
vc.pageViewController.view.backgroundColor = UIColor.blueColor()
我获取UIPageViewController并设置颜色但不更新
如果深入兔洞以获取我当前查看的页面,我可以获取并设置所有值,但我的视图永远不会更新
我真正想做的就是这样的事情
@IBAction func sendButtonTouched(sender: AnyObject) {
if let vc = self.childViewControllers.last as? ContainerViewController{
vc.pageViewController.view.backgroundColor = UIColor.blueColor()
print("make it blue baby")
if let pageItemController = vc.getCurrentViewController(){
print(pageItemController.indexLabel.text)
pageItemController.message = self.messageTextView.text
pageItemController.messageImage.image = UIImage()
pageItemController.reloadInputViews()
}
}
}
并在ContainerViewController中
func getCurrentViewController()-> MIPViewController?
{
print("\(self.pageViewController.viewControllers!.count) view controllers")
if let vc = self.pageViewController.viewControllers!.first as? PageItemViewController
{
if vc.index < mipCount
// must be a MIPViewController
{
return vc as? MIPViewController
}
}
return nil
}
在我的控制台输出中,我看到了
make it blue baby
1 view controllers
Optional("This is a message of the number 0")
Optional("")
所以一切都被调用了,但是如上所述,没有任何视图可以更新
我可能在这里遗漏了一些非常基本的东西,谢谢你的帮助 我还检查了其他问题,例如Access Container View Controller from Parent iOS 但是使用childViewControllers的afaik也是有效的