使用 IB 中的设计重用 UIControl 子类

Posted

技术标签:

【中文标题】使用 IB 中的设计重用 UIControl 子类【英文标题】:Reuse UIControl subclass with the design made in IB 【发布时间】:2012-02-24 12:44:44 【问题描述】:

我对 UIControl 进行了子类化来创建我的自定义控件,但我使用 Interface Builder 对其进行了设计。现在我想“导出”它并将其用于另一个应用程序,我不知道我应该做什么才能重用它。它使用 initWithCoder 加载。

我在互联网上搜索了很多,但我没有找到我的问题的正确答案。

谢谢。

【问题讨论】:

.m 文件、.h 文件和 .xib 文件?没有? 其实我在开发这个自定义控件时使用了Storyboard。但是,如果我在 xib 文件中再次执行此操作,我可以在使用 Storyboard 的应用程序中使用它吗?所以我有 .m 文件和 .h 文件以及 Storyboard。 我没有使用storyBoard,但我认为应该有一个选项来选择你的控件类,就像在IB中一样。 是的,我可以选择一个自定义类,但在那个自定义类 (myCustomControl.h) 中,我只有控件的逻辑,没有图纸。那么这些图纸会发生什么? 如果有的话,它将使用myCustomControl.xib 【参考方案1】:

也许你需要在 ViewController 方法的 viewDidLoad 中使用如下代码:

CustomControl *control = [[[NSBundle mainBundle] loadNibNamed:@"CustomControl" owner:nil options:nil] objectAtIndex:0];
control.frame = CGRectMake(5.0f, 0.0f, 310.0f, 180.0f);
[self.view addSubview:control];

【讨论】:

这意味着我应该使用 .xib 文件而不是 Storyboard 来开发我的整个应用程序? 我认为是的。并且使用 StroyBoard 仅适用于 ios 5。但是有很多设备使用 iOS 4。

以上是关于使用 IB 中的设计重用 UIControl 子类的主要内容,如果未能解决你的问题,请参考以下文章

sendActionsForControlEvents中的UIControl子类问题

UIControl子类-意外地找到nil,同时隐式展开一个可选值

UIControl 子类延迟响应

UIControl 子类 - 如何停止触摸事件流?

如何将 UIControl 从 iPhone xib 重用到 iPad xib

子类 UIControl 来制作自定义选择器