如何在ViewController中从单独的文件初始化UIView?

时间:2010-11-17 05:20:54

标签: iphone

我一直使用IB,但我正在尝试通过代码完成所有工作,而我却没能完成这项任务。

我有一个ViewController来处理用户输入和2个UIViews,它们将同时可见(每个都在一个单独的头/实现UIView文件中):

1 UIView表示更改的自定义标签栏(底部50 px) 1 UIView表示显示的界面(标签栏上方的所有内容)

每个都需要存在于自己的框架中,从ViewController初始化,以便它可以控制它们以及它们显示的内容。

2 个答案:

答案 0 :(得分:2)

Bra,UIViewControllers只有一个UIView作为他们内心的一部分。

即“查看”...即......实际属性view,如self.view = somethingview.hidden = YES

但是,您当然可以添加任意数量的子视图 该视图

这是正常使用视图的方式。几乎每个.view都有子视图。

UIView *bottomThing = [[UIView alloc] init];
bottomThing.frame = CGRectMake whatever
UIView *otherThing = [[UIView alloc] init];
otherThing.frame = CGRectMake whatever

[view addSubview:bottomThing];
[view addSubview:otherThing];

在示例中,我们在主要的“内置”视图中添加了两个子视图,您将其简称为“视图”。所以我们在我们的“视图”中添加了bottomView,并在我们的“视图”中添加了topView。

您添加的子视图可以是普通的旧UIView,也可以是您自己的UIView特殊子类。

MySpecialView *bottomThing = [[UIView alloc] init];
bottomThing.frame = CGRectMake whatever
ExtraordinaryView *otherThing = [[UIView alloc] init];
otherThing.frame = CGRectMake whatever

[view addSubview:bottomThing];
[view addSubview:otherThing];

(我想FTR可以想象你可以将UIViewController子类化为其中有多个视图,但这与这个问题毫无意义且无关。)

从您的UIViewController,您可以以任何方式操纵子视图。

例如[bottomThing doStuff:3.7]bottomThing.hidden=YES等等。

再次在主“视图”中添加更多子视图是绝对正常的 - 这是制作iPhone应用程序的基本方式。只有一个“.view” - 您可以根据需要在其中添加更多视图。希望它有所帮助。

答案 1 :(得分:1)

UIView *myView = [[UIView alloc] init];
[self.view addSubview:myView];
[myView release];