FXForms,自动生成iOS表单
1.简介
FXForms是一个简单的表单提交框架,他的作者是鼎鼎大名的 Nick Lockwood,你也许听说过他的其他的一些框架,比如 iCarousel.
为什么使用FxForms?
- 表单处理简单化,使开发者能轻松上手
- 表单自适应不同屏幕
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. 一些技巧
- 有的时候我们需要给字段设定一些默认值,比如Email。我们可以设置字段 FXFormFieldDefaultValue:
// -- username
- (NSDictionary *)emailField{
return @{
FXFormFieldHeader: @"Login", // Form Title
FXFormFieldKey: @"email", // 对应的 key
FXFormFieldTitle: @"Email", // 字段的 Title
FXFormFieldDefaultValue: @"Your Email" // 字段的预留信息 <--
};
}
注意这个option跟FXFormFieldPlaceholder是不一样的,FXFormFieldPlaceholder仍能让你输入,而FXFormFieldDefaultValue是默认值
- 设置只读, 有些时候我们要设置一些表单字段为只读。
// -- 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 任务池
FXForms,自动生成iOS表单的更多相关文章
- django中ModelForm save方法 以及快速生成空表单或包含数据的表单 包含错误信息
django中ModelForm学习系列一~save方法 Model代码 from django.db import models # Create your models here. class P ...
- Chrome 自动填充的表单是淡黄色的背景
Chrome 自动填充的表单是淡黄色的背景解决方案; input:-webkit-autofill { -webkit-box-shadow: 0 0 0px 1000px #fff inset; - ...
- jquery自动将form表单封装成json的具体实现
前端页面:<span style="font-size:14px;"> <form action="" method="post&q ...
- hibernate中.hbm.xml和注解方式自动生成数据表的简单实例(由新手小白编写,仅适用新手小白)
绝逼新手小白,so 请大神指点! 如果真的错的太多,错的太离谱,错的误导了其他小伙伴,还望大神请勿喷,大神请担待,大神请高抬贵嘴......谢谢. 好了,正题 刚接触ssh,今天在搞使用.hbm.xm ...
- 【工具篇】利用DBExportDoc V1.0 For MySQL自动生成数据库表结构文档
对于DBA或开发来说,如何规范化你的数据库表结构文档是灰常之重要的一件事情.但是当你的库,你的表排山倒海滴多的时候,你就会很头疼了. 推荐一款工具DBExportDoc V1.0 For MySQL( ...
- MVC动态生成的表单:表单元素比较多 你就这样写
MVC动态生成的表单:表单元素比较多 你就这样写: public ActionResult ShoudaanActionResult(FormCollection from,T_UserM user) ...
- Mybatis总结之如何自动生成数据库表结构
一般情况下,用Mybatis的时候是先设计表结构再进行实体类以及映射文件编写的,特别是用代码生成器的时候. 但有时候不想用代码生成器,也不想定义表结构,那怎么办? 这个时候就会想到Hibernate, ...
- 使用Vue动态生成form表单
form-create 表单生成器 具有数据收集.校验和提交功能的表单生成器,支持双向数据绑定和事件扩展,组件包含有复选框.单选框.输入框.下拉选择框等表单元素以及省市区三级联动,时间选择,日期选择, ...
- sqlite3 根据实体自动生成建表语句
public class BuildSqlTool { public static string GetCreateTableSql(object t) { //CREATE TABLE &quo ...
随机推荐
- CCNA实验2.VLAN
一. 二.配置主VTP上的信息 sw2上配置为domain server,sw1上配置为domain client,sw2上增加vlan并命名和添加描述 conf t vtp domain corp ...
- Linux安全事件应急响应排查方法总结
Linux安全事件应急响应排查方法总结 Linux是服务器操作系统中最常用的操作系统,因为其拥有高性能.高扩展性.高安全性,受到了越来越多的运维人员追捧.但是针对Linux服务器操作系统的安全事件也非 ...
- Web - 客户端存储的几种方式
客户端存储主要方便一些APP离线使用.今天就来说说客户端存储的方法有多少? 说在最前面的一句:所有的客户端存储都有一个原则:读写的数据必须要同域 1 Cookie Cookie是一项很老的技术的,就是 ...
- 小兔的棋盘(hdu2067)
小兔的棋盘 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- 无法import的原因(ImportError: No module named *****)
python中,每个py文件被称之为模块,每个具有__init__.py文件的目录被称为包.只要模块或者包所在的目录在sys.path中,就可以使用import 模块或import 包来使用. 如果想 ...
- App 卸载记录
http://blog.csdn.net/jiangwei0910410003/article/details/36427963 总结:没有root权限的情况下,还是使用Intent发送卸载请求,同时 ...
- 温故而知新:Delegate,Action,Func,匿名方法,匿名委托,事件
Tks: http://www.cnblogs.com/yjmyzz/archive/2009/11/23/1608818.html 20150801 add: http://www.cnblogs. ...
- 【Spark】jupyter notebook
iPython 和 Jupter Notebook 都支持spark ,调用方式如下: PYSPARK_DRIVER_PYTHON=ipython ./bin/pysparkPYSPARK_DRIVE ...
- 一致性哈希算法(consistent hashing)【转】
一致性哈希算法 来自:http://blog.csdn.net/cywosp/article/details/23397179 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希 ...
- 项目管理知识体系指南(PMBOOK指南)(第5版) 阅读摘要
1.7.2 项目经理的人际技能 领导力: 团队建设: 激励: 沟通: 影响力: 决策能力: 政治和文化意识: 谈判: 建立信任: 冲突管理: 教练技术: 3.4 规划过程组 在制定项目管理计划和项目文 ...