带有分离的 .h、.m 和 xib 文件的 UIView

Posted

技术标签:

【中文标题】带有分离的 .h、.m 和 xib 文件的 UIView【英文标题】:UIView with Separated .h, .m and xib files 【发布时间】:2012-08-07 09:32:38 【问题描述】:

我想创建一个 UIView,它会在用户操作时出现在几个不同的 UIViewControllers 中。例如,每当用户单击“?”时,“如何”弹出视图。它弹出的按钮包含有关用户感兴趣的特定操作的相关信息。视图还可能具有其他元素,例如“完成”按钮和将保存文本的 UITextView 等...

直观地说,它让我想到用 .h、.m 和 xib 文件创建一个单独的 UIView,并且每个需要此 UIView 的 UIViewController 将简单地分配 + 初始化它并执行 [self.view addSubView:flexUIView] 或插入它与动画。嗯……不行……

我找不到任何说明如何执行此类操作的教程。

有人熟悉这种方法并有一些方向吗?

如果不是,这种情况的常用方法是什么?

【问题讨论】:

【参考方案1】:

Alloc init 不会像在 ViewControllers 中那样加载自定义 UIView 的 nib。 您应该在 alloc init 之后使用以下代码加载 nib

假设你有CustomView.h、CustomView.m、CustomView.xib

        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CustomView" owner:self options:nil];
    yourView = (CustomView *)[nib objectAtIndex:0];

【讨论】:

【参考方案2】:

我还发现这个教程也有一个项目文件的链接,它提供了关于如何做到这一点的更好的想法:

Creating Reusable UIViews

【讨论】:

【参考方案3】:

这是我编写的使用 .xib、.h、.m 文件创建自定义 UIView 的教程。我添加了两个示例项目,展示了 Interface Builder 和编程方法。

https://github.com/PaulSolt/CompositeXib

【讨论】:

以上是关于带有分离的 .h、.m 和 xib 文件的 UIView的主要内容,如果未能解决你的问题,请参考以下文章

将多个XIB文件添加到任何文件

是否可以更改 xib 文件?

如何为使用 xib 用户界面创建的 TableViewController 设置静态表视图

通用应用加载不同的视图

从单独的控制器文件控制 .xib 中的按钮

IOS视图变化