访问在Interface Builder中创建的视图

时间:2009-04-14 22:01:30

标签: objective-c uiview uiviewcontroller

我创建了一个ChildViewController类,然后创建了一个使用该类的nib。

然后我创建了一个BaseView,其中包含一些按钮,以及一些我将以编程方式更改的文本。

然后我创建了另外两个视图(男孩和女孩),我希望能够放在基本视图后面,以便背景颜色与ImageView中的一些图形不同。我已将我在IB'Boy'和'Girl'中创建的观点命名为......

但是当我回到我正在调用ChildViewController的代码时,我不知道如何访问我创建的视图,因此我可以调用insertSubView。我需要在代码中实例化它们吗? (也许在ViewDidLoad中?)nib是否在加载时创建实例?

我对如何处理单个ViewController的多个视图感到困惑

编辑=================

@Pablo Santa Cruz

你的答案假定我有两个笔尖和两个视图控制器(每个视图一个)。我想知道我是否可以使用一个笔尖和一个控制器,并在UIViews中加载。创建另一个笔尖和控制器似乎很傻,当所有想要做的就是改变背景颜色和一些图形。我不能以编程方式将UIViews加载到UIViewController中吗?

3 个答案:

答案 0 :(得分:2)

在Xcode的App Controller类中添加IBOutlets,然后在IB(按住Ctrl键单击或右键单击)中将它们从Inspector中的连接选项卡链接到对象。

然后您就可以向对象发送方法调用。

Xcode中的代码应如下所示:

@interface AppController : NSObject
{
   IBOutlet Girl girlIvarName1;
   IBOutlet Boy boyIvarName2;
}


@end

答案 1 :(得分:2)

您可以通过为其标记属性指定值来以编程方式访问UIView,该属性可以在检查器的第一个选项卡上的IB中设置(命令1)

标记值默认为零,因此如果您想要专门访问它,请将其设置为非零且唯一。例如100,我将在下面的示例代码中使用

设置标记后,您可以使用UIViewController中的以下代码访问视图,该代码是包含标记视图的NIB的initWithNibName

UIView *aView = [self.view viewWithTag:100];

答案 2 :(得分:0)

您可以使用以下代码获取IBuilder视图的实例:

boyViewController = [[BoyViewController alloc] initWithNibName:@"BoyViewController" bundle:nil];
girlViewController = [[GirlViewController alloc] initWithNibName:@"GirlViewController" bundle:nil];

假设您的NIB文件名是BoyViewController和GirlViewController。在这些情况下,您可以做任何您需要的事情。 I.E.,将它们添加到父视图中(在父视图上添加addSubView消息)。