欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

XLForm 框架学习笔记(持续更新......)

程序员文章站 2022-07-02 19:18:34
...

最近公司要做新项目,趁着现在不忙赶紧将一些知识点提前储备下,由于产品是一款安全产品,需要输入好多信息而且产品的需求又非常细,所以想讲页面做成那种可以配置的,期初简直是让我蛋都碎了,不过还好有强大的github,找到了这个XLForm,它可以方便的进行配置界面省时省力,所以将了解到的东西赶紧记下来,以后好方便开发

Multivalued sections(增加,删除,移动行)

任何的XLFormSectionDescriptor对象都支持增加,删除,移动行数据,模式是可以配置的首先先是建立一组数据API:


section = [XLFormSectionDescriptor formSectionWithTitle:@"Multivalued TextField"

sectionOptions:  XLFormSectionOptionCanReorder|XLFormSectionOptionCanInsert | XLFormSectionOptionCanDelete

sectionInsertMode:XLFormSectionInsertModeButton];

如上面所示,第二个参数可以根据配置得到支持任何增删改的组合形式

第三个参数为增加的行数据进入界面的方式,XLFormSectionInsertModeLastRow (从右向左滑动进入) XLFormSectionInsertModeButton(从上到下进入) 第一个为默认参数

动态添加例子


- (id)init

{

XLFormDescriptor * form; //建立表单,等同于创建uitableview

XLFormSectionDescriptor * section;//建立组  section

XLFormRowDescriptor * row;//建立行相当于cell

//动态的将要添加一下行添加到组里

NSArray * nameList [email protected][@"family",@"male",@"female",@"client"];

form = [XLFormDescriptorformDescriptorWithTitle:@"Multivalued examples"];

// 初始化每个cell的类型与属性

section = [XLFormSectionDescriptorformSectionWithTitle:@"MultiValued TextField"

sectionOptions:XLFormSectionOptionCanReorder | XLFormSectionOptionCanInsert |XLFormSectionOptionCanDelete];

section.multivaluedTag [email protected]"textFieldRow";

[form addFormSection:section];

//添加循环遍历数组动态添加数据 思考可以将数组做成plist文件,这样可以单独配置有需求可以修改

for (NSString * tagin nameList) {

//        创建一个单行输入框

row = [XLFormRowDescriptorformRowDescriptorWithTag:nilrowType:XLFormRowDescriptorTypeTexttitle:nil];

//设置placeholder

[[row cellConfig]setObject:@"Add a new tag"forKey:@"textField.placeholder"];

//添加默认值

row.value = [tagcopy];

//添加到一组中

[section addFormRow:row];

}

//    最后添加看一个添加按钮

row = [XLFormRowDescriptorformRowDescriptorWithTag:nilrowType:XLFormRowDescriptorTypeTexttitle:nil];

[[row cellConfig]setObject:@"Add  tag"forKey:@"textField.placeholder"];

[section addFormRow:row];

return [superinitWithForm:form];

}

获取值

你能在-(NSDictionary *)formValues中获取所有的行信息,或者是XLFormViewController实例和XLFormDescriptor实例

XLForm添加值添加在行信息XLFormRowDescriptor中,它属于XLFormSectionDescriptor,用建立XLFormRowDescriptor时传入的Tag还获取值,其中并不存multivaluedTag。

每一个组信息中都存在着一个multivaluedTag值,里面存在着当前组内的行信息的数组multivaluedTag值为Key

例如:

//根据 section.multivaluedTag = @"textFieldRow" 获取到相应的组信息,打印出来的为当前组的所有行的value

NSArray * tempvalues =form.formValues[@"textFieldRow"];

NSLog(@"%@",form.formValues[@"textFieldRow"]);

//formSections中存储着表单中所有组的指针

XLFormSectionDescriptor * tempsection=form.formSections[0];

//重新遍历一次,值是一样的

for (int index=0; index