【问题标题】:Accessing Views created in Interface Builder访问在 Interface Builder 中创建的视图
【发布时间】:2009-04-14 22:01:29
【问题描述】:

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

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

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

但是当我返回调用 ChildViewController 的代码时,我不确定如何访问我创建的视图,因此我可以调用 insertSubView。我需要在代码中实例化它们吗? (也许在 ViewDidLoad 中?)笔尖在加载时会创建实例吗?

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

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

@巴勃罗·圣克鲁斯

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

【问题讨论】:

  • 是的,你也可以这样做。

标签: objective-c uiview uiviewcontroller


【解决方案1】:

在 Xcode 中的 App Controller 类中添加 IBOutlets,然后在 IB 中将它们从 Inspector 中的连接选项卡链接到对象。

然后您将能够向对象发送方法调用。

Xcode 中的代码应该是这样的:

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


@end

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      【解决方案3】:

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

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

      假设您的 NIB 文件名为 BoyViewController 和 GirlViewController。使用这些实例,您可以做任何您需要做的事情。即,将它们添加到父视图(在父视图上带有 addSubView 消息)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-16
        • 1970-01-01
        • 1970-01-01
        • 2023-03-08
        • 1970-01-01
        • 1970-01-01
        • 2015-10-23
        • 2012-05-08
        相关资源
        最近更新 更多