我正在尝试制作动态注册表单结构。因此,基于提供xml或数据,它将生成动态表单。这是我的类层次结构的屏幕截图。
这里,Form类是基类。根据提供的数据,它将生成需要创建多少页面的表单。每个页面可以有一个表但只有一个或多个组(实际上是剖面视图)。每个组都有自定义字段,自定义字段可以包含特殊的TextFeild或Dropdown字段或ImageField。
以下是生成的表单屏幕:
我现在面临的问题是:我的Page.m类包含表视图委托方法,我需要从我的CF_Fields类中触发一个Event。例如:CFImageView包含ImagePickerController委托方法。从库中挑选图像时,我需要展开表格视图单元格高度。但我没有从CFImageView类访问该事件。
类层次结构是: “表单”包含“页面”类(表逻辑在这里) “Page”包含“组”类 “Group”包含“CustomFeild”类 “CustomFeild”包含“FieldView”类 “FieldView”包含“CFTextField”或“CFDropdown”或“CFImageView”类
我需要从Page class的底层类中激活一个事件。
我是否需要继承所有课程,或者我是否需要使用委托或是否应该维护类别?
答案 0 :(得分:0)
我用以下方式沟通。但我不知道这是不是正确的方式!
-(void)pageViewUpdate
{
BOOL found = FALSE;
UIView *currentSuperView = self;
while (!found) {
if ([[currentSuperView superview] isKindOfClass:[CustomField class]]) {
CustomField *customField = (CustomField *)[currentSuperView superview];
customField.height = CUSTOM_FIELD_IMAGE_HEIGHT+CUSTOM_FIELD_IMAGE_VIEW_CELL_HEIGHT_PADDING;
}
if([[currentSuperView superview] isKindOfClass:[Page class]])
{
found = TRUE;
Page *page = (Page *)[currentSuperView superview];
[page updateTableView];
}
currentSuperView = [currentSuperView superview];
}
}
我正在搜索我想要的superview类,然后访问必要的属性。