Skip to content

Latest commit

 

History

History
48 lines (43 loc) · 2.94 KB

README.md

File metadata and controls

48 lines (43 loc) · 2.94 KB

#FLYForm

FLYForm是一个用XML文件统一管理APP表单的框架,运行在iOS平台。目前该框架在我的一个iOS项目支撑25个表单。FLYForm功能如下: ####1. Cell元数据管理 在表单中,通常描述一个Cell大概有以下几种元素:标题、填写控件、验证类、绑定的数据源组成,这些在FLYForm里称之为Cell元数据。而这些通常散落在代码的各个角落或者有诸多不优雅的if...else...实现,XML方式会更加优雅和具有可扩展性。 ####2. 表单验证管理 数据合法性验证是表单开发中不可缺少的环节,FLYForm统一表单验证方式,内置10种验证类,通过写XML文件即可灵活的为Cell配置一种或多种验证类。开发者在提交表单时调用[self.flyFormModel doValidate]即可完成表单验证。 ####3. ViewModel <-> View 双向映射 一直以来视图模型是表单开发中重要环节,其核心包括:a、数据更新,表单界面自动更新 b、表单界面更新,数据自动更新。FLYForm引入轻量级的K-V映射做为ViewModel,并完成ViewModel和View自动双向映射。若服务端支持JSON格式提交,可直接把K-V映射(实质上是NSDictionary)提交到服务端。 ####4. 模块化支持 FLYForm支持模块化,把表单配置划分到XML文件,然后在FLYForm.xml文件中通过<include file="FLYForm.ModuleName.xml"/>包含进来。

如何开始?

####1.下载FLYFormDemo尝试运行。 ####2.尝试修改FLYForm.xml文件,比如修改Cell标题等。XML文件如下: Coding

<?xml version="1.0" encoding="utf-8"?>
<Root>
    <!-- 
     支持include,按模块划分XML配置文件。
     <include file="FLYForm.ModuleName.xml"/>
     -->
    
    <!-- 表单ID唯一 -->
    <Form id="修改订单">
        <Section>
            <Cell key="price" title="价格" cellClass="FLYFormInputCell"  
            placeholder="auto" validateClass="FLYValidateMust,FLYValidateDecimals" />
            <Cell key="number" title="数量" cellClass="XJNumCell" 
            validateClass="" placeholder=""/>
            <Cell key="unit" title="单位" cellClass="FLYFormGeneralCell" />
            <Cell key="totalAmount" title="总计" cellClass="FLYFormGeneralCell"/>
        </Section>
        <Section  headerClass="DefaultSection" >
            <Cell key="name" title="姓名" cellClass="FLYFormInputCell" 
            validateClass="FLYValidateMust" placeholder="请填写姓名"/>
            <Cell key="phone" title="手机号" cellClass="FLYFormInputCell" 
            validateClass="FLYValidateMust,FLYValidateMobile" placeholder="auto"/>
            <!-- 单项选择属性optionsData表示选项的数据源,在plist文件统一配置:FLYForm.OptionSingleData.plist -->
            <Cell key="specifyDeliveryTimeText" title="送货时间" cellClass="FLYFormPickerCell" 
            optionsData="送货时间" validateClass="FLYValidateMust" placeholder="auto"/>
        </Section>
    </Form>
</Root>