我应该使用IB还是Subclass UIView

时间:2011-01-09 21:08:06

标签: objective-c cocoa-touch ios4 uiview interface-builder

所以,我开发了一种下拉按钮类。

我们称之为DDButton。 我主要导出一个函数:

-(void) addButtonWithImage:(UIImage*)image andTarget:(id)target andSelector:(SEL)selector

允许用户在下拉列表中添加另一个按钮。

我需要在我的应用的不同屏幕中使用DDButton。

我想用它来表达:

DDButton* ddb = [[DDButton alloc] initWithFrame:rect];
[ddb addButtonWithImage....]
[ddb addButtonWithImage....]

我的问题是因为我之前没有将UIView子类化,我应该如何实现它,以后我该如何使用它呢?

我是否使用IB并创建一个存根UIView,我将连接到Identity Pane中的DDButton? 如果是这样,我将如何在稍后实例化视图。

或者, 我是UIView的子类吗?如果是这样,我应该覆盖哪些方法?你在初始化器中设置我的按钮吗?在LayoutSubView?在drawRect?

我很想听听这里最好的方法。 谢谢!

修改

假设我选择IB方式:我有一个主要按钮,我设置无论如何 addButtonWithImage()调用,实际上所有对addButtonWithImage的调用只是“追加”到该按钮。我希望主按钮是视图的大小,直到添加其他按钮,然后视图适当增长。但是,我希望用户首先选择视图的大小...我猜是使用setFrame。 awakeFromNib中的含义我不能指望帧大小(它只取我假设的xib大小)。那我在哪里设置我的主按钮? LayoutSubView? setFrame?我不确定。

2 个答案:

答案 0 :(得分:0)

将您的视图作为UIView添加到IB中的接口,然后在标识窗格中更改该类。如果需要在代码中进行初始化,请使用 - (void)awakeFromNib方法。我建议在addButtonWithImage ....

中添加按钮时设置按钮

答案 1 :(得分:0)

我可能会做一个子类,在代码中构建视图是一件好事。

覆盖drawrect:做你需要做的任何自定义绘图,如果你只是添加UIImageview或其他东西并进行定位,你可以覆盖initWith ...:并进行自定义初始化。