使用 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,同时隐式展开一个可选值