【发布时间】:2014-02-05 00:32:41
【问题描述】:
我正在制作一个应用程序,其中有一个容器视图,它是我的视图控制器屏幕的一半。从容器视图控制器的类中,我试图访问和操作位于容器视图之外的视图。 (下图)
我正在尝试从容器视图类访问并将项目添加到滚动视图,如下所示:
parent = (GFProfileViewController*)[self parentViewController];
UIScrollView *scroll = (UIScrollView *)[parent.view viewWithTag:222];
parent.titleHolders.contentSize = CGSizeMake(320 * 4,60);
UILabel *testLabel = [[UILabel alloc] init];
[testLabel setFrame:CGRectMake(0, 0, 100, 40)];
[testLabel setText:@"My Test label"];
[parent.titleHolders addSubview:testLabel];
scroll.backgroundColor = [UIColor blueColor];
怎么也行不通。我什至尝试从父母的“带有标签的视图”方法访问视图。
都不行。
我知道代码很好,因为当我将它移到父 vc 时,一切都按预期工作。不过,我需要能够从容器中操作视图。有人可以帮忙吗?
【问题讨论】:
-
我不确定为什么这段代码不能在子视图控制器中工作......但是良好的编程习惯要求一个视图控制器应该控制另一个视图控制器的视图......把这个代码在父视图控制器中并给父视图一个公共方法,子视图可以调用(并向其发送参数)以完成这项工作。
-
@nhgrif,你不是说“......良好的编程习惯规定一个视图控制器应该不控制另一个视图控制器的视图......”
-
@DuncanC 是的,绝对是。谢谢指正。
-
@nhgrif 我有点明白,但因为我使用的是容器视图和页面视图控制器,所以我别无选择
-
@ngrif 让我大笑起来。 Ibam 将找出邓肯的答案。我可能只需要稍微改变一下我的结构。我同意(因为我是新手)我想要一个简单的答案,但我最好从一开始就正确地做事
标签: ios objective-c viewcontroller parentviewcontroller uicontainerview