我有一个带有CustomClass =" BaseClass"的view.xib文件。 (我在XCode编辑器上配置它),所以我可以这样做:
BaseClass *mBassClass= [[[NSBundle mainBundle] loadNibNamed:@"view" owner:self options:nil] objectAtIndex:0];
但我想知道如何做到这一点:
我会从BaseClass获得一个子类。例如,ChildClass从BaseClass扩展,并从Nib加载视图,但使用ChildClass
ChildClass *aChild = [[[NSBundle mainBundle] loadNibNamed:@"view" owner:self options:nil] objectAtIndex:0];
ChildClass2 *anotherView = [[[NSBundle mainBundle] loadNibNamed:@"view" owner:self options:nil] objectAtIndex:0];
所以,我希望BaseClass包含一些具有特定功能的子类,但所有这些视图都具有相同的Nib文件
在我的情况中,我正在开发以下观点:
(1)一个nib文件,它有一些来自控件的uibutton和一个包含Core Plot Graph的UIView
(2)一个名为GraphView的BaseClass,它与nib文件匹配,并且它与uibuttons一起运行。
(3)有些子类,每个子类在UIView上绘制不同的图形/图形,但继承了uibutton控件的功能。
有什么建议吗?感谢
答案 0 :(得分:2)
创建您的XIB作为图表的容器。它包含所有常见的视图和功能,但不包含特定于图表的内容。
现在,当您加载NIB时,您将始终获得BaseClass
个实例。实际上,您必须始终获得BaseClass
- 您无法更改从NIB中取消归档的类。
您的图表视图不应该是BaseClass
的子类。然后应该实例化适合当前情况的图表视图类,并将其添加为容器视图的子视图,该视图由BaseClass
(容器)实例拥有。
如果图表视图需要更改公共按钮状态,那么当您将其添加为子视图时,应该为图表视图提供对BaseClass
实例的引用。