亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS開發教程之XLForm的基本使用方法

2019-10-21 18:41:19
字體:
來源:轉載
供稿:網友

前言

在iOS開發中,開發"表單"界面,字段稍微多一點的一般都用UITableView來做,而XLForm就是這樣一個框架,它是創建動態表格視圖最牛逼的iOS庫, 用它實現表單功能,非常簡單,省心省力。但是很可惜,搜索了很多文章都只是翻譯官方文檔,很多人在使用該庫的時候可能都被官方文檔帶走遠了,不知道如何具體使用。正好最近也要用到這個庫,所以寫個入門使用文章供大家參考。

以下是這個庫一個簡單的結構圖:

ios,xlform,使用,自定義

一、 導入項目

使用CocoaPods或者手動導入庫文件,本人選擇直接導入項目源文件的方式。

ios,xlform,使用,自定義
導入項目

二、改造表單ViewController

讓ViewController繼承自XLFormViewController,并重寫下面的兩個方法

@interface OneViewController : XLFormViewController@end@implementation OneViewController- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self){ [self initializeForm]; } return self;}- (id)initWithCoder:(NSCoder *)aDecoder { self = [super initWithCoder:aDecoder]; if (self){ [self initializeForm]; } return self;}@end

三、構造表單

- (void)initializeForm { // 設置是否顯示Cell之間分界線 //self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; // 設置Section的高度 self.tableView.sectionHeaderHeight = 30; XLFormDescriptor * form;//form,一個表單只有一個 XLFormSectionDescriptor * section;//section,一個表單可能有多個 XLFormRowDescriptor * row; //row,每個section可能有多個row // Form form = [XLFormDescriptor formDescriptor]; // First section section = [XLFormSectionDescriptor formSection]; section.title = @"用戶"; [form addFormSection:section]; // 普通文本 row = [XLFormRowDescriptor formRowDescriptorWithTag:@"username" rowType:XLFormRowDescriptorTypeText]; // 設置placeholder [row.cellConfig setObject:@"用戶名" forKey:@"textField.placeholder"]; // 設置文本顏色 [row.cellConfig setObject:[UIColor redColor] forKey:@"textField.textColor"]; [section addFormRow:row]; // 密碼 row = [XLFormRowDescriptor formRowDescriptorWithTag:@"password" rowType:XLFormRowDescriptorTypePassword]; // 設置placeholder的顏色 NSAttributedString *attrString = [[NSAttributedString alloc] initWithString:@"密碼" attributes:          @{NSForegroundColorAttributeName:[UIColor greenColor],          }]; [row.cellConfig setObject:attrString forKey:@"textField.attributedPlaceholder"]; [section addFormRow:row]; // Second Section section = [XLFormSectionDescriptor formSection]; section.title = @"日期"; [form addFormSection:section]; // 日期選擇器 row = [XLFormRowDescriptor formRowDescriptorWithTag:@"birthday" rowType:XLFormRowDescriptorTypeDate title:@"出生日期"]; row.value = [NSDate dateWithTimeIntervalSinceNow:60*60*24]; [section addFormRow:row];  // Third Section section = [XLFormSectionDescriptor formSection]; section.title = @"頭像"; [form addFormSection:section]; // 圖片選擇 row = [XLFormRowDescriptor formRowDescriptorWithTag:@"userpic" rowType:XLFormRowDescriptorTypeImage]; [section addFormRow:row]; // Fourth Section section = [XLFormSectionDescriptor formSection]; section.title = @"選擇器"; [form addFormSection:section]; // 選擇器 row = [XLFormRowDescriptor formRowDescriptorWithTag:@"sex" rowType:XLFormRowDescriptorTypeSelectorPush]; row.noValueDisplayText = @"暫無"; row.selectorTitle = @"性別選擇"; row.selectorOptions = @[@"男",@"女",@"其他"]; row.title = @"性別"; [row.cellConfigForSelector setObject:[UIColor redColor] forKey:@"textLabel.textColor"]; [row.cellConfigForSelector setObject:[UIColor greenColor] forKey:@"detailTextLabel.textColor"]; [section addFormRow:row]; // Fifth Section section = [XLFormSectionDescriptor formSection]; section.title = @"加固"; [form addFormSection:section]; // 開關 row = [XLFormRowDescriptor formRowDescriptorWithTag:@"enforce" rowType:XLFormRowDescriptorTypeBooleanSwitch title:@"加固"]; [section addFormRow:row];  // Sixth Section section = [XLFormSectionDescriptor formSection]; [form addFormSection:section]; // 按鈕 row = [XLFormRowDescriptor formRowDescriptorWithTag:@"conform" rowType:XLFormRowDescriptorTypeButton]; row.title = @"確定"; [section addFormRow:row]; self.form = form;}-(void)didSelectFormRow:(XLFormRowDescriptor *)formRow{ // 判斷是不是點擊了確定按鈕 if([formRow.tag isEqualToString:@"conform"] && formRow.rowType == XLFormRowDescriptorTypeButton){  //獲取表單所有到的值  NSDictionary *values = [self formValues];  NSLog(@"%@", values); } [super didSelectFormRow:formRow];}//重寫改該方法 上面的方法就不會調用了//-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{//// NSLog(@"%s", __func__);////}@end

四、效果圖

ios,xlform,使用,自定義

五、總結

前面兩步是官方文檔中可以找到的,也很簡單,關鍵在于initializeForm方法中具體構造表單的過程,這里有必要強調幾點:

1、XLFormViewController實現了UITableViewDataSource, UITableViewDelegate,并且持有一個UITableView,這個從該類的聲明可以看出來,所以UITableView 、UITableViewDataSource, UITableViewDelegate中的方法都可以正常使用。

@interface XLFormViewController : UIViewController<UITableViewDataSource, UITableViewDelegate,XLFormDescriptorDelegate, UITextFieldDelegate, UITextViewDelegate, XLFormViewControllerDelegate>

2、XLForm將表單抽象為Form,Section,Row三個層次,分別對應三個類

XLFormDescriptor * form;//form,一個表單只有一個XLFormSectionDescriptor * section;//section,一個表單可能有多個XLFormRowDescriptor * row; //row,每個section可能有多個row

3、每個表單中的具體信息最后都落腳到XLFormRowDescriptor中,通過它可以配置不同樣式的表單項,通過構造函數的rowType指定具體的表單類型,該框架提供了非常豐富的rowType,具體可以參考官方文檔說明。

4、更細化配置表單項就需要借助于XLFormRowDescriptor中的屬性進行配置,常用的有

@property (nonatomic, readonly, nonnull) NSMutableDictionary * cellConfig;@property (nonatomic, readonly, nonnull) NSMutableDictionary * cellConfigForSelector;

這個配置的時候,往往有同學不知道具體如何才能設置屬性,比如怎么設置表單輸入框的placeholder?更進一步如何設置placeholder 的顏色。其實它用到了KVC,因為它們兩個都是UITextField類中的屬性,那么直接進入UITextField查找,發現如下信息:

@property(nullable, nonatomic,copy) NSString    *placeholder; @property(nullable, nonatomic,copy) NSAttributedString  *attributedPlaceholder NS_AVAILABLE_IOS(6_0); 

那么設置起來就是

 [row.cellConfig setObject:@"用戶名" forKey:@"textField.placeholder"]; [row.cellConfig setObject:attrString forKey:@"textField.attributedPlaceholder"];

注意這里的key的寫法,就是KVC的寫法。其他的屬性依此類推。

5、如何獲取設置好的表單的值?其實非常簡單,該框架提供一個方法formValues,它的返回類型是一個NSDictionary,其中key就是XLFormRowDescriptor設置時的Tag??梢灾苯釉诳刂破髦姓{用該方法獲取表單值,上面的效果圖設置后的表單信息如下:

ios,xlform,使用,自定義

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产91精品久久久| 91国在线精品国内播放| 欧美成人中文字幕| 国产成人+综合亚洲+天堂| 日韩在线视频一区| 欧美成aaa人片在线观看蜜臀| 欧美日韩国产综合新一区| 色综合天天狠天天透天天伊人| 欧美肥婆姓交大片| 国产精品人成电影| 久久国产精品偷| 欧美大片免费观看在线观看网站推荐| 亚洲欧美中文日韩v在线观看| 久久久国产成人精品| 日韩美女视频免费在线观看| 国产精品香蕉在线观看| 欧美精品18videos性欧美| 粉嫩老牛aⅴ一区二区三区| 久久久久久亚洲精品| 97婷婷大伊香蕉精品视频| 国产v综合ⅴ日韩v欧美大片| 久久久精品视频成人| 国产精品自产拍在线观| 另类视频在线观看| 国产精品久久在线观看| 久久成人精品一区二区三区| 日韩动漫免费观看电视剧高清| 日韩亚洲欧美中文高清在线| 亚洲热线99精品视频| 精品亚洲va在线va天堂资源站| 日韩精品有码在线观看| 91在线无精精品一区二区| 热久久这里只有精品| 欧美在线一级va免费观看| 国产欧美一区二区三区久久人妖| 操人视频在线观看欧美| 国产精品永久在线| 国产欧美一区二区白浆黑人| 国产精品久久婷婷六月丁香| 日韩电视剧免费观看网站| 国产精品久久久久久久久久东京| 欧美黑人又粗大| 国产亚洲欧美日韩精品| 欧美日韩国产激情| 久久久久久久香蕉网| 国产美女91呻吟求| 久久久久久国产| 亚洲日本欧美中文幕| 韩国国内大量揄拍精品视频| 91色精品视频在线| 久久综合九色九九| 国产69精品久久久久9999| 亚洲成人黄色网址| 海角国产乱辈乱精品视频| 欧美韩国理论所午夜片917电影| 日本欧美黄网站| 精品视频久久久久久| 国产三级精品网站| 国产精品美女午夜av| 91精品国产色综合久久不卡98口| 成人激情综合网| 久久精品国产视频| 久久高清视频免费| 日本一欧美一欧美一亚洲视频| 在线视频国产日韩| 成人在线播放av| 国产精品国产福利国产秒拍| 亚洲天堂久久av| 亚洲自拍偷拍视频| 国产精品十八以下禁看| 亚洲www永久成人夜色| 亚洲福利视频在线| 国产精品国产自产拍高清av水多| 欧美高清电影在线看| 亚洲国产美女久久久久| 91高清视频免费观看| 久久久久久网址| 亚洲欧美精品在线| 国产精品ⅴa在线观看h| 欧美在线一区二区三区四| 国产精品一区二区电影| 精品福利在线视频| 欧美激情视频网址| 日韩一二三在线视频播| 久久天天躁狠狠躁夜夜爽蜜月| 91亚洲午夜在线| 亚洲新声在线观看| 欧美一级大片在线免费观看| 4p变态网欧美系列| 91九色单男在线观看| 国产精品手机播放| 国产国产精品人在线视| 国产一区二区香蕉| 亚洲精品v欧美精品v日韩精品| 日日骚av一区| 97在线看福利| 久久久久久久久久久亚洲| 国产精品成人va在线观看| 91久久在线视频| 久久久久久一区二区三区| 国产成人亚洲综合青青| 久99九色视频在线观看| 日韩在线中文视频| 色综合久久88色综合天天看泰| 日韩有码在线视频| 久久国产精彩视频| 亚洲色在线视频| 成人h视频在线观看播放| 国产91av在线| 最近中文字幕mv在线一区二区三区四区| 久久国产精彩视频| 影音先锋欧美精品| 国内偷自视频区视频综合| 欧美大全免费观看电视剧大泉洋| 国产成人精品久久久| 九九热精品视频国产| 秋霞av国产精品一区| 国产精品福利在线观看| 国产精品九九久久久久久久| 一个色综合导航| 曰本色欧美视频在线| 亚洲国产精品va在线看黑人| 国产偷亚洲偷欧美偷精品| 91免费电影网站| 亚洲精品日韩激情在线电影| 国产做受69高潮| 91精品国产91久久久久久吃药| 国产精品日韩在线一区| 欧美激情第1页| 欧美国产日产韩国视频| 成人免费自拍视频| 欧美精品在线播放| 在线观看日韩视频| 国语自产偷拍精品视频偷| 性欧美暴力猛交69hd| 国产精品成人播放| 中文字幕亚洲欧美| 亚洲自拍偷拍一区| 亚洲美女av在线| 国内精品久久久久影院 日本资源| 日韩电影中文字幕在线观看| 国产伦精品一区二区三区精品视频| 少妇高潮 亚洲精品| 欧美极品少妇xxxxⅹ免费视频| 97视频在线观看成人| 欧美亚洲另类激情另类| 一区二区三区回区在观看免费视频| 国产精品亚洲美女av网站| 亚洲国产成人av在线| 97久久伊人激情网| 亚洲色图国产精品| 久久精品中文字幕一区| 91性高湖久久久久久久久_久久99| 成人免费视频a| 亚洲欧美日韩一区二区三区在线| 亚洲天堂免费在线| 国产精品99久久久久久久久久久久| 毛片精品免费在线观看| 久久久免费观看视频| 51色欧美片视频在线观看| 国产精品∨欧美精品v日韩精品| 日韩精品亚洲元码| 国产亚洲欧美另类中文| 黑人巨大精品欧美一区二区免费|