我正在尝试从显示它的UIViewController更新iOS上的ContainerView的接口内容(嵌入在UIView中的UIViewController)。但是, ContainerView只是不会更新其内容。
ContainerView和ViewController与不同的类相关联。我可以使用以下几种方法在两个视图控制器之间传递数据:
- (void)displayStringInContainer:(NSString *)string
string
从ViewController成功传递给ContainerView,但是当我尝试在界面元素中显示该字符串时 - 没有任何反应(即使代码被调用):
self.buttonName.titleLabel.text = string;
我甚至尝试在按钮上调用setNeedsDisplay
,但没有任何反应。请注意,所有接口项都会发生这种情况。
以下是我从ViewController调用ContainerView上的方法的方法:
ContainerViewController *cvc = [[ContainerViewController alloc] init];
[cvc displayStringInContainer:@"Text"];
我已经做了很多搜索,但没有找到任何东西(也试图查看Apple Dev Site,但过去三天它一直在下降:P)。 有谁知道如何从另一个ViewController更新ContainerViewController的内容?为什么这不起作用?我已经在这一段时间里一直在摸不着头脑。
答案 0 :(得分:1)
Alloc init'ing cvc不是获取引用的正确方法 - 这是一个新实例,与视图中嵌入的实例不同。您可以使用self.childViewControllers [0]从父控制器访问代码中的该实例(假设您只有一个容器视图)。您还可以通过实现prepareForSegue并使用segue.destinationController(这将是您的嵌入式控制器)来获取引用。
您在理解中似乎缺少的是,在故事板中使用容器视图时获得的控制器是子视图控制器。这就像你在代码中调用[self addChildViewController:whatever]然后将子视图添加为视图的子视图一样。