Ios7 Can';无法修改在情节提要中创建的UIView

Ios7 Can';无法修改在情节提要中创建的UIView,ios7,uiview,storyboard,Ios7,Uiview,Storyboard,我正在尝试修改在情节提要中创建的视图。我可以读取并记录视图的属性(如框架——请参见下文),它们与预期的一样,因此我确信我有一个对视图的有效引用。我想做各种修改,包括改变其背景颜色和仿射变换,并添加一个标签,但我不能得到任何修改工作 一些代码: UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; self.storyboardVC = [sb instantiateInitialViewControlle

我正在尝试修改在情节提要中创建的视图。我可以读取并记录视图的属性(如框架——请参见下文),它们与预期的一样,因此我确信我有一个对视图的有效引用。我想做各种修改,包括改变其背景颜色和仿射变换,并添加一个标签,但我不能得到任何修改工作

一些代码:

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
self.storyboardVC = [sb instantiateInitialViewController];
self.viewA = [self.storyboardVC.view viewWithTag:77];
NSLog(@"\nVC: %@\nviewA: %@", self.storyboardVC, self.viewA);

self.viewA.backgroundColor = [UIColor greenColor];
CGRect r = CGRectMake(100, 25, 50, 50);
UILabel *tag = [[UILabel alloc] initWithFrame:r];
tag.backgroundColor = [UIColor orangeColor];
tag.text = @"tag";
[self.viewA addSubview:tag];
尺寸应使标记标签适合viewA内部,但“标记”标签从未出现。而且背景色永远不会改变。我将viewA alpha设置为0.4,以便查看标记标签是否位于其后面,但不是。所有视图都已启用userInteractionEnabled,并且在情节提要中已选中autoresize子视图


我还尝试了其他编程修改,但都失败了。这就好像视图是只读的。我在这里遗漏了什么?

您遗漏的是Cocoa是一个框架。你必须了解它在做什么,并与之合作,而不是反对它

这里的问题是,这不是使用视图控制器及其视图的合法方式:

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
self.storyboardVC = [sb instantiateInitialViewController];
self.viewA = [self.storyboardVC.view viewWithTag:77];
您任意拉出(实例化)视图控制器(
storyboardVC
)并使用其视图(
viewA
),但该视图控制器不属于应用程序的视图控制器层次结构,视图也不属于其视图层次结构-在应用程序的界面中不会发生任何情况。所以你自然什么也看不见。你在一个被扔掉的看不见的副本上做这些。(您知道,不能使用代码更改情节提要本身;情节提要实际上是只读的。)


要在视图中进行实际可见的更改,请等待框架通知您视图即将出现在界面中(例如,视图控制器的
viewDidLoad
视图将出现
)。这就是这些生命周期事件消息的用途。

我显示的代码在我的应用程序的视图控制器的ViewDidDisplay:animated中。这不是正确的位置吗?但是视图已经是self.view
——正如我所说的,您从故事板中取出的是您正在创建和丢弃的副本。例如,您的意思可能是
[self.view viewWithTag:77]
。我想了好几次您的评论,顿悟了。你没有指出我根本的误解,但你帮我看出来了。直到现在,我才意识到,当我启动一个项目时,我的项目中包含的名为“ViewController”的类就是故事板中的top ViewController作为实例的类。(我想这就是我要说的。)我现在看到,当故事板ViewController被选中时,它的类被标识为自定义类ViewController,而不是UIViewController。我已经做了几年Xcode和iOS了(从Xcode 3开始),但从来没有得到过这个。大部分时间我都使用cocos2d,从来没有使用故事板或InterfaceBuilder,所以当我开始使用故事板时,它看起来很神奇。我怀疑故事板中的ViewController对象是否在苹果文档中的任何地方都有明确的解释。@RobertL如果你看我的简历,你会发现我试图纠正这个问题……:)