我有一个nib文件,其中我有一个视图,其中包含一个背景图像,一个按钮和另一个覆盖整个屏幕(阴影)需要移动到前面的图像。在视图中,我正在创建子视图,在创建它们并使用[self addView]
添加它们之后,我需要将阴影图像移到前面。
我目前正在使用tag属性来查找该视图,但我认为可能有更好的方法,通过识别我在Interface Builder中添加的某个名称的子视图。
我尝试添加一个IBOutlet来将子视图与其父视图连接起来,但是它没有用(并且没有意义,因为子视图已经以某种方式连接到它的父视图)。
IBOutlets
方式应该有效,并且可能是最好的方法。在.h文件中声明它们后,确保在Interface Builder中建立了正确的连接。
iPhone会对视图控制器进行延迟加载。可能没有像在Kendall中指定的那样在initWithCoder或任何init方法中加载nib。
如果要在显示视图之前访问它们,viewDidLoad是从nib访问任何内容的首选位置。
希望有所帮助。
您在什么时候尝试访问子视图?如果您在ViewController的init中尝试,IBOutlets将为零。您可以获得的第一种方法可能是viewDidLoad。
以这种方式做事有意义的原因是IBOutlets只是指向某个组件的直接指针,即使它们已经是其他东西的子视图。只是节省了很多狩猎。
只要您使用viewWithTag:方法,使用Tag是定位特定视图的完美有效方法。如果您已经在使用标签,则除非您不喜欢调用viewWithTag,否则无需更改为IBOutlets。