0

我正在尝试从正在显示的 UIViewController 更新 iOS 上 ContainerView 的界面内容(嵌入在 UIView 中的 UIViewController)。但是,ContainerView 不会更新其内容。

ContainerView 和 ViewController 与不同的类相关联。我可以使用以下几种方法在两个视图控制器之间传递数据:

- (void)displayStringInContainer:(NSString *)string

成功地从 ViewController 传递到 ContainerView,但是当我尝试在界面元素中显示该string字符串时 - 没有任何反应(即使代码被调用):

self.buttonName.titleLabel.text = string;

我什至尝试setNeedsDisplay按下按钮,但没有任何反应。请注意,所有界面项都会发生这种情况。

下面是我如何从 ViewController 调用 ContainerView 上的方法:

ContainerViewController *cvc = [[ContainerViewController alloc] init];
[cvc displayStringInContainer:@"Text"];

我已经做了很多搜索,但没有找到任何东西(也尝试查看 Apple Dev Site,但过去三天它一直处于关闭状态:P)。有谁知道如何从另一个 ViewController 更新 ContainerViewController 的内容?为什么这不起作用?一段时间以来,我一直在为此挠头。

4

1 回答 1

1

Alloc init'ing cvc 不是获取您的参考的正确方法 - 这是一个新实例,与嵌入在您的视图中的实例不同。您可以使用 self.childViewControllers[0] 从父控制器的代码中访问该实例(假设您只有一个容器视图)。您还可以通过实现 prepareForSegue 并使用 segue.destinationController (这将是您的嵌入式控制器)来获取参考。

您的理解中似乎缺少的是,当您在情节提要中使用容器视图时获得的控制器是子视图控制器。就像您在代码中调用 [self addChildViewController:whatever] 然后将子视图添加为视图的子视图一样。

于 2013-07-21T04:07:31.873 回答