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

首頁 > 系統 > iOS > 正文

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

2020-07-26 02:28:40
字體:
來源:轉載
供稿:網友

前言

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

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

一、 導入項目

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


導入項目

二、改造表單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

四、效果圖


五、總結

前面兩步是官方文檔中可以找到的,也很簡單,關鍵在于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??梢灾苯釉诳刂破髦姓{用該方法獲取表單值,上面的效果圖設置后的表單信息如下:

總結

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
美女999久久久精品视频| 琪琪亚洲精品午夜在线| 欧美黑人性猛交| 欧美日韩国产成人在线观看| 日韩在线观看免费av| 国产精品亚洲视频在线观看| 5566成人精品视频免费| 久久躁日日躁aaaaxxxx| 欧美黑人xxx| 欧美日韩国产综合新一区| 一区二区三区四区视频| 色妞一区二区三区| 亚洲女同性videos| 日韩大陆欧美高清视频区| 亚洲最大激情中文字幕| 久久福利视频网| 色妞欧美日韩在线| 最近2019中文字幕大全第二页| 亚洲日本欧美日韩高观看| 91久久精品一区| 成人午夜在线影院| 亚洲精品美女在线观看播放| 欧美国产激情18| 国产亚洲精品一区二555| 91精品国产自产91精品| 国产欧美va欧美va香蕉在| 亚洲在线观看视频网站| 国产99久久精品一区二区永久免费| 国产97人人超碰caoprom| 国产亚洲美女精品久久久| 日韩欧美国产黄色| 2019中文字幕在线观看| 色狠狠av一区二区三区香蕉蜜桃| 国产精品伦子伦免费视频| 欧美尺度大的性做爰视频| 日韩在线观看电影| 国产美女久久精品香蕉69| 超碰精品一区二区三区乱码| 亚洲一区二区久久久久久| 96pao国产成视频永久免费| 亚洲一区二区精品| 国外成人免费在线播放| 久久久亚洲福利精品午夜| 日韩精品在线观看视频| 日韩亚洲成人av在线| 成人看片人aa| 热久久99这里有精品| 亚洲第一区在线观看| 久久中文字幕视频| 久久久久国产精品www| 草民午夜欧美限制a级福利片| 中文字幕日韩精品有码视频| 狠狠久久五月精品中文字幕| 91色精品视频在线| 久久久精品日本| 久久99国产综合精品女同| 精品无人国产偷自产在线| 色噜噜狠狠狠综合曰曰曰| 日韩av色在线| 色悠悠国产精品| 综合欧美国产视频二区| 在线播放国产一区二区三区| 精品日韩美女的视频高清| 国产精品一区久久| 波霸ol色综合久久| 亚洲精品永久免费精品| 国产亚洲福利一区| 青青久久aⅴ北条麻妃| 国产日韩精品电影| 中文日韩在线视频| 日韩久久午夜影院| 在线观看日韩欧美| 久久精品2019中文字幕| 91网站免费看| 亚洲欧美中文日韩v在线观看| 在线播放国产一区二区三区| 欧美电影免费观看大全| 久久成人精品一区二区三区| 国产久一一精品| 国产自产女人91一区在线观看| 88国产精品欧美一区二区三区| 亚洲欧美国产精品va在线观看| 亚洲色图35p| 欧美野外wwwxxx| 久久久中文字幕| 国产综合香蕉五月婷在线| 亚洲成av人乱码色午夜| 亚洲精品91美女久久久久久久| 成人免费视频网址| 韩国视频理论视频久久| 好吊成人免视频| 狠狠躁夜夜躁人人爽超碰91| 欧美成人免费小视频| 欧美裸体男粗大视频在线观看| 欧美性猛交xxxx久久久| 国产中文日韩欧美| 久久视频这里只有精品| 美女性感视频久久久| 久久人人爽亚洲精品天堂| 国产精品美女无圣光视频| www日韩中文字幕在线看| 国产精品一区二区久久精品| 中文字幕精品久久久久| 都市激情亚洲色图| 中文字幕亚洲激情| 最近中文字幕mv在线一区二区三区四区| 久久夜色精品亚洲噜噜国产mv| 精品久久在线播放| 亚洲区一区二区| 国产精品一区二区av影院萌芽| 国内免费精品永久在线视频| 日韩精品免费在线视频| 黑人极品videos精品欧美裸| 日本成人免费在线| 亚洲第一视频网站| 欧美日韩亚洲一区二区三区| 2019中文字幕在线免费观看| 欧美一区二区三区精品电影| 亚洲日本成人网| 最好看的2019年中文视频| 色综合久久88色综合天天看泰| 国产专区欧美专区| 国产精品久久久久久久久久新婚| 青青草99啪国产免费| 亚洲最大的成人网| 亚洲男人7777| 国产精品夜色7777狼人| 色偷偷888欧美精品久久久| 91视频国产高清| 亚洲第一区在线观看| 一本一道久久a久久精品逆3p| 亚洲天堂av网| 国内精久久久久久久久久人| 伊人av综合网| 98视频在线噜噜噜国产| 国产精选久久久久久| 久久久精品久久久久| 日韩中文字幕视频在线观看| 91中文在线观看| 91系列在线观看| 色偷偷av一区二区三区乱| 97视频在线观看免费| 国产精品成人av性教育| 国产午夜精品久久久| 亚洲第一区第一页| 色哟哟入口国产精品| 精品国产一区二区在线| 国产日韩欧美91| 91亚洲精品一区二区| 日韩麻豆第一页| 国产裸体写真av一区二区| 国产日产欧美a一级在线| 欧美人与性动交a欧美精品| 成人免费在线视频网站| 欧美专区第一页| 亚洲精品视频网上网址在线观看| 亚洲精品福利免费在线观看| 亚洲精品视频免费在线观看| 中文字幕国产亚洲2019| 亚洲男女自偷自拍图片另类| 欧美亚洲国产日韩2020| 久久人人爽亚洲精品天堂| 亚洲欧美日韩精品久久| 久久网福利资源网站|