FXForms,自动生成iOS表单
为什么80%的码农都做不了架构师?>>>
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 TitleFXFormFieldKey: @"email", // 对应的 keyFXFormFieldTitle: @"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 TitleFXFormFieldKey: @"email", // 对应的 keyFXFormFieldTitle: @"Email", // 字段的 TitleFXFormFieldDefaultValue: @"Your Email" // 字段的预留信息 <--};
}
注意这个option跟FXFormFieldPlaceholder是不一样的,FXFormFieldPlaceholder仍能让你输入,而FXFormFieldDefaultValue是默认值
- 设置只读, 有些时候我们要设置一些表单字段为只读。
// -- username
- (NSDictionary *)emailField{return @{FXFormFieldHeader: @"Login", // Form TitleFXFormFieldKey: @"email", // 对应的 keyFXFormFieldTitle: @"Email", // 字段的 TitleFXFormFieldPlaceholder: @"Your Email", // 字段的预留信息@"textField.enabled": @(NO) // set readonly};
}
5. 联系我
如有什么问题,可以联系我: arkilis#gmail.com
注: 文章由我们 iOS122 的小伙伴 @Arkilis 整理,喜欢就一起参与: iOS122 任务池
转载于:https://my.oschina.net/ios122/blog/537375
FXForms,自动生成iOS表单相关推荐
- iOS表单input自动填充后背景色变为黄色
ios表单Input自动填充背景色变为黄色 问题描述 解决方案 问题描述 在开发页面的时候发现,在iOS上input框自动填充后input的背景色变为黄色,再点击一下就可以恢复正常. 解决方案 设置自 ...
- 使用Vue动态生成form表单的实例代码
具有数据收集.校验和提交功能的表单生成器,包含复选框.单选框.输入框.下拉选择框等元素以及,省市区三级联动,时间选择,日期选择,颜色选择,文件/图片上传功能,支持事件扩展. 欢迎大家star学习交流: ...
- 配置spring整合jpa自动生成数据表
配置spring整合jpa自动生成数据表 applicationContext.xml <?xml version="1.0" encoding="UTF-8&qu ...
- 如何自动生成推荐歌单:ACM论文翻译与解读 | Translation and Interpretation of ACM Survey
如何自动生成推荐歌单:ACM论文翻译与解读 | How to Automatically Generate Music Playlists: Translation and Interpretatio ...
- 网页自动提交Form表单的方法
最近做网站运营用到了邮件营销,使用了搜狐的sendcloud邮件代发平台.要想使用sendcloud平台发送邮件给客户,就必须调用他们的API接口进行批量发送,那么问题来了.sendcloud提供了好 ...
- 动态生成form表单,不在为表单烦恼
form-create 具有动态渲染.数据收集.校验和提交功能的表单生成器,动态生成Form表单.支持双向数据绑定和事件扩展,组件包含有复选框.单选框.输入框.下拉选择框等表单元素以及省市区三级联动, ...
- Hibernate中自动生成数据库表的两种方式
第一种方式:Hibernate中利用工具类自动生成数据库表 1.建好POJO object, XML Mapping File,配置文件(hibernate.cfg.xml). 2.编写工具类 imp ...
- 使用hibernate自动生成数据库表
使用hibernate自动生成数据库表 使用hibernate自动生成数据库表在hibernate3.2以后有两种方式: 1,使用hbm.xml形式:2,使用注解的形式. 本文介绍第一种方式: IDE ...
- php文本框自动补全,PHP自动补全表单的两种方法
效果图: 第一种:从数据库中检索之后补全 第二种:邮箱等纯前端的补全 先说第二种,使用开源的插件,所以相对简单. github上面的项目 completer. https://github.com/f ...
最新文章
- 我的 FPGA 学习历程(13)—— 电子钟项目
- Oracle Listener 动态注册 与 静态注册
- Linux 下安装python软件包(pip、nose、virtualenv、distribute )
- 【测绘程序设计】视距测量神器V1.0(附源程序)
- 济宁医学院计算机专业好就业吗,山东这3所医学院实力强,就业率高,中等生可捡漏...
- 全面整理(随时更新)
- 一款“灵动”的滑动按钮
- 解决SecureCRT连接linux超时后断开
- pythonATM,购物车项目实战2,主函数入口
- WPF TreeView tools
- 中科院-杨力祥视频教程	03课程
- 桌面的文件突然不见了怎么恢复?分享3个恢复指南
- HTTP接口设计规范
- 用对分法求解方程x^3-x^2-x-1=0
- html 中thead标签,HTML thead 标签
- [課程筆記] 機器學習2021(李弘毅) L13. Transformer (下)
- WSL Ubuntu忘记root密码和用户密码
- 京东搭配购怎么设置,操作指南来啦
- Android开发:手机震动工具类
- 秦九邵算法计算多项式(C语言实现)
热门文章
- 大学生使用计算机趋势英语作文,学习使用电脑StudentUseofComputers
- 20200729:力扣199周周赛题解(下)
- Mysql存储过程老是报错_mysql中看看这个存储过程老是报错,该如何处理
- php 分页类 bootstrap,ThinkPHP分页使用bootstrap样式
- java 中class相关的问题
- [网络收集]LINUX磁盘挂载mount和共享
- gnome桌面环境 kde桌面环境的区别
- 两个股市真理之间的矛盾
- 前腾讯AI Lab主任张潼加盟创新工场,出任港科大创新工场联合实验室主任
- 明略数据(现在)是一家怎样的公司?