【问题标题】:How can I load nib from UIViews in iOS 4?如何在 iOS 4 中从 UIViews 加载 nib?
【发布时间】:2011-06-22 17:12:27
【问题描述】:

如何在 iOS 4 中从 UIView 加载 nib?

我没有 UIViewController,因为我将此自定义视图添加到父视图。

我想从一个 nib 文件初始化这个自定义视图。我应该使用哪个初始化程序? initWithFrame 还是 initWithCoder ?

到目前为止,我只在界面生成器中分配了自定义类。 (见图:http://cl.ly/7pmj)。这是必要的吗?如果是这样,还是不行,为什么还不够呢?

NB 我在 StackOverflow 中找到了 this related question。但是,它没有解释如何使用 nib 初始化视图本身。

我需要为这个视图自定义 drawRect 方法,所以我不能只从 nib 文件中添加子视图。我需要从 nib 文件初始化视图本身。

谢谢

【问题讨论】:

    标签: ios ipad ios4


    【解决方案1】:

    是的,必须更改 nib 文件中的自定义视图类。 确保两件事: 1. 转到您的CustomView.nib 文件,选择对象中的视图,然后在身份检查器下确保自定义类正确。 2.在youCustomView.m文件中,确保你有这部分:

    - (id)initWithCoder:(NSCoder*)coder 
    {
        if ((self = [super initWithCoder:coder])) 
        {
           //add custom change after init from nib. 
        }
        return self;
    }
    

    【讨论】:

      【解决方案2】:

      使用相关问题中的方法 (NSBundle loadNibNamed) 并确保该调用中的所有者是一个对象,该对象具有相关视图的 IBOutlet。

      将该 iboutlet 连接到界面构建器中的视图(您需要将 IB 中的所有者类设置为加载 nib 调用中的所有者类)。

      nib 会将视图加载到该 iboutlet 变量中。

      在 .h 文件中:

      IBOutlet UIView *myView;
      

      在 .m 文件中:

      [[NSBundle mainBundle] loadNibNamed:@"viewToLoad" owner:self options:nil];
      [someOtherView addSubView:myView];
      

      其余的在 IB 中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多