iOS中表单视图第三方控件——FXForms(二)

简介: iOS中表单视图第三方控件——FXForms

三、通过协议方法来进行节点配置


       上面演示的创建表格视图的方式是在节点配置类中创建属性,分别配置属性的节点信息来创建每一个cell,开发者也可以不创建属性,或者创建属性但是不以属性为节点来进行cell配置,使用FXFrom协议的方法,也可以完成节点的创建和配置,示例如下:


@interface MyForm : NSObject<FXForm>

@end

@implementation MyForm

//创建与配置节点

- (NSArray *)fields

{

   return @[

            //这里面配置字典的方法和属性字典的配置方法一一致

            @{FXFormFieldKey: @"email", FXFormFieldTitle: @"email"},

            @{FXFormFieldKey: @"phone", FXFormFieldTitle: @"phone"},

            @{FXFormFieldKey: @"address", FXFormFieldTitle: @"address"},

            @{FXFormFieldKey: @"name", FXFormFieldTitle: @"name"}

            ];

}


@end

效果如下:

image.png



-(NSArray *)fields方法是FXForm协议中的一个方法,在这个方法中,可以直接进行节点的创建和配置,FXForm协议中还提供了两个方法,意义如下:


//这个方法用于配置额外的节点,如果需要某些节点不对应任何属性,可以在这个方法中配置

- (NSArray *)extraFields;

//这个方法需要返回一个字符串数组,如果需要某些属性不对应节点,即有属性的存在,但是不生成cell,可以将属性名传入返回

- (NSArray *)excludedFields;

       节点也可以进行复合,例如可以将一个节点配置类作为属性设置给另一个节点配置类,示例如下:


//子节点信息配置类

@interface SubForm : NSObject<FXForm>

@property(nonatomic,assign)NSInteger age;

@property(nonatomic,assign)NSDate * date;

@end

@implementation SubForm

@end


//父节点信息配置类

@interface MyForm : NSObject<FXForm>

@property(nonatomic,strong)NSString * email;

@property(nonatomic,strong)NSString * passwd;

@property(nonatomic,assign)BOOL rememberMe;

//其中有属性为子节点

@property(nonatomic,strong)SubForm * subForm;

@end

@implementation MyForm

@end

子节点会被默认包装在新的视图控制器中,也可以设置FXFormFieldInline为@YES来使其复合进当前视图控制器,效果如下:


            image.pngimage.png


四、关于自定义视图控制器


       如果开发者的视图控制器并不是继承于FXFormViewController,也可以使用FXForms来快捷的创建表单视图,开发者自定义的视图控制器需要遵守FXFormControllerDelegate协议,示例如下:


@interface ViewController : UIViewController<FXFormControllerDelegate>

//系统的tableView

@property(nonatomic,strong)UITableView * tableView;

//FX表单控制器

@property(nonatomic,strong)FXFormController * formController;

@end

@implementation ViewController


- (void)viewDidLoad {

   [super viewDidLoad];

   self.tableView = [[UITableView alloc]initWithFrame:self.view.frame style:UITableViewStyleGrouped];

   self.formController = [[FXFormController alloc] init];

   self.formController.tableView = self.tableView;

   self.formController.delegate = self;

   self.formController.form = [[MyForm alloc] init];

   self.formController.form = [MyForm new];

   [self.view addSubview:self.tableView];

}

@end

上面的代码极大了简化了ViewController中的代码量。


五、对Cell进行属性设置


       在进行节点属性字典的配置时,可以通过访问属性路径的方式来对cell的属性进行一些配置,例如:


-(NSDictionary *)passwdField{

   return @{@"textLabel.textColor":[UIColor redColor]};

}

目录
相关文章
|
7月前
|
iOS开发
iOS 多个滚动控件嵌套Demo
iOS 多个滚动控件嵌套Demo
39 0
|
11月前
|
iOS开发
iOS短信验证码控件,自动输入回调两次解决办法
iOS短信验证码控件,自动输入回调两次解决办法
319 0
|
iOS开发
IOS的UITableView控件简单使用
IOS的UITableView控件简单使用
124 0
|
iOS开发
iOS开发 - 写一个刷新的控件(未封装,适合新手学习,查看原理)
iOS开发 - 写一个刷新的控件(未封装,适合新手学习,查看原理)
128 0
iOS开发 - 写一个刷新的控件(未封装,适合新手学习,查看原理)
|
iOS开发
iOS开发-加在透明视图上的控件会透明
iOS开发-加在透明视图上的控件会透明
113 0
|
安全 iOS开发
iOS小技能:下拉刷新控件的适配
1. 下拉顶部背景色设置: 往tableView的父控件添加拉伸背景视图 2. present 半屏适配 iOS13 modalPresentationStyle属性默认不是全屏样式`UIModalPresentationFullScreen`,而是半屏样式,需要根据需求手动设置。 present 半屏,会导致列表下拉刷新失效。
159 0
iOS小技能:下拉刷新控件的适配
|
iOS开发
iOS小技能:自动布局实现兄弟控件N等分且宽高比例是1:N(xib 上实现)
本文为 iOS视图约束专题的第三篇:xib上使用自动布局教程
140 0
|
数据可视化 程序员 iOS开发
iOS开发:用XIB拖控件关联时报错:“Could not insert new outlet connection…”解决方法
在iOS开发过程中,尤其是iOS开发初期,会遇到各种各样的错误,有些错误是开发者的不熟悉或者疏忽大意造成的,还有些是无厘头的错误,可以通过重启Xcode或者重启电脑就可解决。
211 0
iOS开发:用XIB拖控件关联时报错:“Could not insert new outlet connection…”解决方法
|
iOS开发
ios贝塞尔曲线表格视图
x轴和y轴都是可自定义,曲线的值也是对应的值
73 0
ios贝塞尔曲线表格视图
|
Android开发 iOS开发 索引
仿IOS 带字母索引的滑轮控件
仿IOS 带字母索引的滑轮控件
仿IOS 带字母索引的滑轮控件