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

Posted

技术标签:

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

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

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

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

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

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

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

谢谢

【问题讨论】:

【参考方案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 中。

【讨论】:

以上是关于如何在 iOS 4 中从 UIViews 加载 nib?的主要内容,如果未能解决你的问题,请参考以下文章

iOS将UIViews数组保存到文件然后重新加载

如何在 iOS 中从 NIB 加载 NIB

如何在 iOS 中从 Images.xcasset 加载图像集(捆绑包)

在幻灯片 iOS APP 中从 URL Xcode 9 加载图像

在应用程序启动时在后台加载 UIViews

如何在 iOS 中屏蔽 UIViews