• FXForms,自动生成iOS表单


    1.简介

    FXForms是一个简单的表单提交框架,他的作者是鼎鼎大名的 Nick Lockwood,你也许听说过他的其他的一些框架,比如 iCarousel.

    为什么使用FxForms?

    1. 表单处理简单化,使开发者能轻松上手
    2. 表单自适应不同屏幕

    FXForms是怎么工作的?

    Fields will automatically be assigned suitable control types, for example, the rememberMe field will be displayed as a UISwitch, the email field will automatically have a keyboard of type UIKeyboardTypeEmailAddress and the password field will automatically have secureTextEntry enabled.

    根据它的官方解释,FXForms上面的每一个元素是根据类型来自动生成的,比如 NSString 会自动生成一个 UITextField. UIDate 会自动生成一个DateTime Picker等等。

    项目主页:https://github.com/nicklockwood/FXForms

    项目的本身自带了很好的例子,在此不再重复。示例工程给出一个入门的例子,能够帮助大家快速上手。

    示例工程:https://github.com/ios122/ios122

    2.安装

    安装的方式通常有两种,Cocopods, 源代码安装。后一种安装方式很直观,只需要把相应的 FXForms.h 和 FXForms.m拖到项目中即可。这里我们简单介绍一下cocopods的安装:

    Step 1. 新建一个iOS工程,在工程根目录下新建一个文件 Podfile, 内容如下:

    pod 'FXForms'
    

    Step 2. Run:

    pod update --verbose --no-repo-update
    

    ~安装完毕, 请打开xcworkspace,示例中是 FXFormsTutorial.xcworkspace

    3. 基本的使用规则

    这里我们使用一个最常见的例子:登录。

    Example : 登录View

    Step 1, 生成一个新的类,使这个类继承 NSObject,同时 Delegate FXForm, 代码如下:

    LoginFXForm.h

    //
    //  LoginFXForm.h
    //  FXFormsTutorial
    //
    //  Created by arkilis on 28/11/2015.
    //  Copyright © 2015 arkilis. All rights reserved.
    //
    
    #import <UIKit/UIKit.h>
    #import "FXForms.h"
    
    @interface LoginFXForm : NSObject <FXForm>
    
    @property (nonatomic, copy)     NSString        *email;
    @property (nonatomic, copy)     NSString        *password;
    
    @end
    

    LoginFXForm.m

    #import "LoginFXForm.h"
    
    @implementation LoginFXForm
    
    
    
    // 定制 Form
    
    // -- username
    - (NSDictionary *)emailField{
        return @{
                 FXFormFieldHeader:         @"Login",       // Form Title
                 FXFormFieldKey:            @"email",       // 对应的 key
                 FXFormFieldTitle:          @"Email",       // 字段的 Title
                 };
    }
    // -- password
    - (NSDictionary *)passField {
        return @{
                 FXFormFieldKey:            @"password",    // 这里如果FXForm知道这里用的是密码,则自动屏蔽密码,用星标代替
                 FXFormFieldTitle:          @"password",
                 };
    }
    
    
    // Submit button and return button
    - (NSArray *)extraFields
    {
        return @[
                 // 这里你不用在头文件里声明, 只需要在返回的 NSArray中添加一个元素即可
                 @{FXFormFieldTitle: @"Submit", FXFormFieldHeader: @"", FXFormFieldAction: @"submitLoginForm:"},
                 @{FXFormFieldTitle: @"Return", FXFormFieldHeader: @"", FXFormFieldAction: @"returnPreviousView"},
                 ];
    }
    
    @end
    
    

    在注释中,我做了一些详细的解释。

    4. 一些技巧

    1. 有的时候我们需要给字段设定一些默认值,比如Email。我们可以设置字段 FXFormFieldDefaultValue:
    // -- username
    - (NSDictionary *)emailField{
        return @{
                 FXFormFieldHeader:         @"Login",       // Form Title
                 FXFormFieldKey:            @"email",       // 对应的 key
                 FXFormFieldTitle:          @"Email",       // 字段的 Title
                 FXFormFieldDefaultValue:   @"Your Email"   // 字段的预留信息  <--
                 };
    }
    
    

    注意这个option跟FXFormFieldPlaceholder是不一样的,FXFormFieldPlaceholder仍能让你输入,而FXFormFieldDefaultValue是默认值

    1. 设置只读, 有些时候我们要设置一些表单字段为只读。
    // -- username
    - (NSDictionary *)emailField{
        return @{
                 FXFormFieldHeader:         @"Login",       // Form Title
                 FXFormFieldKey:            @"email",       // 对应的 key
                 FXFormFieldTitle:          @"Email",       // 字段的 Title
                 FXFormFieldPlaceholder:    @"Your Email",  // 字段的预留信息
                 @"textField.enabled":      @(NO)           // set readonly
                 };
    }
    
    

    5. 联系我

    如有什么问题,可以联系我: arkilis#gmail.com


    注: 文章由我们 iOS122 的小伙伴 @Arkilis 整理,喜欢就一起参与: iOS122 任务池

  • 相关阅读:
    Python算术运算符
    Python数据类型转换
    Linux下Tomcat启动设置debug模式启动
    FastJson之JsonObject, JsonString, JavaBean,List快速转换
    Linux 之 ./configure --prefix 命令
    JS中Ajax的同步和异步
    MySql 中 case when then else end 的用法
    Linux中CentOS6.5 64位 系统下安装docker步骤
    Linux常用命令 查找文件
    微信小程序中事件
  • 原文地址:https://www.cnblogs.com/ios122/p/5007039.html
Copyright © 2020-2023  润新知