0

我有一个 nib 文件,其中有一个视图,其中包含一个背景图像、一个按钮和另一个覆盖全屏的图像(阴影),需要移动到前面。在视图上,我正在创建子视图,在创建并添加它们之后,[self addView]我需要将阴影图像移到前面。

我目前正在使用 tag 属性来查找该视图,但我认为可能有更好的方法,方法是通过某个名称识别我在 Interface Builder 中添加的子视图。

我尝试添加一个 IBOutlet 以将子视图与其父级连接,但它不起作用(并且没有任何意义,因为子视图已经以某种方式连接到其父级)。

4

4 回答 4

2

IBOutlets方法应该有效,并且可能是最好的方法。在 .h 文件中声明它们之后,确保在 Interface Builder 中建立了正确的连接。

于 2009-03-20T20:25:33.650 回答
1

iPhone 会延迟加载视图控制器。nib 可能没有加载到 initWithCoder 或 Kendall 指定的任何 init 方法中。

如果您想在视图显示之前访问它们,viewDidLoad 是从 nib 访问任何内容的首选位置。

希望有帮助。

于 2009-03-21T08:20:30.827 回答
0

您在什么时候尝试访问子视图?如果您在 ViewController 的 init 中尝试,IBOutlets 将为 nil。您可以获得的第一个方法可能是 viewDidLoad。

这样做确实有意义的原因是 IBOutlets 只是指向某个组件的直接指针,即使它们已经是其他东西的子视图。只是节省了很多狩猎。

于 2009-03-20T20:56:19.537 回答
0

只要您使用 viewWithTag: 方法,使用标签是定位特定视图的一种非常有效的方法。如果您已经在使用标签,则无需更改为 IBOutlets,除非您只是不喜欢调用 viewWithTag:。

于 2009-03-20T21:53:04.377 回答