1

我正在尝试制作动态注册表单结构。所以根据提供的xml或数据,它会生成一个动态的表单。这是我的类层次结构的屏幕截图。

在此处输入图像描述

这里,Form 类是基类。根据提供的数据,它将生成需要创建多少页表单。每个页面可以有一个表,但可以有一个或多个组(实际上是剖面视图)。每个组都有自定义字段,自定义字段可以包含特殊的 TextFeild 或 Dropdown 字段或 ImageField。

这是生成的表单屏幕:

在此处输入图像描述

我现在面临的问题是:我的 Page.m 类包含表视图委托方法,我需要从我的 CF_Fields 类中触发一个事件。例如:CFImageView 包含 ImagePickerController 委托方法。从库中选择图像时,我需要扩展表格视图单元格的高度。但我没有 CFImageView 类的事件访问权限。

类层次结构是: “Form” 包含 “Page” 类(表逻辑在这里) “Page” 包含 “Group” 类 “Group” 包含 “CustomFeild” 类 “CustomFeild” 包含 “FieldView” 类 “FieldView” 包含 “CFTextField”或“CFDropdown”或“CFImageView”类

我需要从 Page 类的底部类中触发一个事件。

我需要继承我的所有类,还是需要使用委托还是应该维护类别?

4

1 回答 1

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];
    }
}

我正在搜索我想要的超级视图类,然后访问必要的属性。

于 2013-05-15T16:03:35.540 回答