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

首頁 > 系統 > iOS > 正文

iOS開發之XLForm的使用方法

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

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

一、 導入項目

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

iOS開發,XLForm

導入項目.png

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

效果圖.png

五、總結

前面兩步是官方文檔中可以找到的,也很簡單,關鍵在于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
国产精品最新在线观看| 一本大道久久加勒比香蕉| 日本在线精品视频| 国产精品美女免费| 欧美最猛黑人xxxx黑人猛叫黄| 性色av一区二区三区在线观看| 丁香五六月婷婷久久激情| 国产欧美在线观看| 亚洲精品小视频| 136fldh精品导航福利| 国产精品第一区| 亚洲自拍欧美另类| 91高潮精品免费porn| 亚洲精品v欧美精品v日韩精品| 日韩中文字幕在线播放| 亚洲精品狠狠操| 亚洲国产精品va在线观看黑人| 精品国产乱码久久久久酒店| 国产91精品久久久久久久| 亚洲欧美日本另类| 久久伊人免费视频| 国产精品jvid在线观看蜜臀| 日韩精品免费看| 欧美另类极品videosbestfree| 国产a级全部精品| 欧美成年人网站| 久久久久国色av免费观看性色| 亚洲国产免费av| 91极品女神在线| 奇米成人av国产一区二区三区| 久久频这里精品99香蕉| 热久久99这里有精品| 中文字幕av一区二区三区谷原希美| 一道本无吗dⅴd在线播放一区| 亚洲精品456在线播放狼人| 亚洲一区二区久久久久久| 日韩大片免费观看视频播放| 久久国产精品视频| 国产精品欧美激情| 精品国产1区2区| 久久久天堂国产精品女人| 中文字幕亚洲综合久久筱田步美| 成人国内精品久久久久一区| 精品亚洲男同gayvideo网站| 欧美色道久久88综合亚洲精品| 国产精品大陆在线观看| 欧美亚洲国产成人精品| 伊人成人开心激情综合网| 日本伊人精品一区二区三区介绍| 亚洲女同性videos| 欧美激情久久久久| 国产精品久久久久久久9999| 国外色69视频在线观看| 亚洲人成网站在线播| 色在人av网站天堂精品| 在线色欧美三级视频| 一区二区三区日韩在线| 亚洲激情在线视频| 日韩欧美在线视频观看| 亚洲精品xxxx| 亚洲午夜激情免费视频| 91成人在线视频| 国产亚洲一区二区在线| 欧美一级高清免费播放| 最近2019中文字幕mv免费看| 亚洲男女自偷自拍图片另类| 国产精品久久久精品| 欧美视频一区二区三区…| 亚洲综合在线播放| 亚洲福利在线视频| 亚洲精品美女在线观看播放| 久久天天躁狠狠躁夜夜躁| 成人自拍性视频| 欧美日韩一区二区精品| 日韩精品视频在线播放| 庆余年2免费日韩剧观看大牛| 亚洲美腿欧美激情另类| 久久久久久69| 在线免费看av不卡| 国产精品日韩精品| 成人激情春色网| 欧美激情中文字幕在线| 国产一区玩具在线观看| 国产精品国模在线| 一区二区三区在线播放欧美| 国产精品视频自拍| 国产精品久久电影观看| 深夜福利日韩在线看| 国产欧美日韩中文字幕| 精品视频在线播放| 成人av资源在线播放| 国产一区二区三区在线看| 亚洲欧美国产精品va在线观看| 欧美视频一二三| 日本午夜人人精品| 91精品国产成人| 久久影院免费观看| 亚洲精品日韩丝袜精品| 亚洲欧美在线第一页| 日日狠狠久久偷偷四色综合免费| 亚洲欧美制服丝袜| 性色av一区二区咪爱| 美日韩丰满少妇在线观看| 久久亚洲电影天堂| 日韩大片在线观看视频| 亚洲欧美精品一区| 国产精品白丝jk喷水视频一区| 久久久久久久国产| 国产精品狠色婷| 欧美视频在线免费看| 亚洲欧美三级在线| 国产精品igao视频| 国产成人精品亚洲精品| 欧美成人合集magnet| 欧美日韩精品中文字幕| 亚洲第一天堂无码专区| 一区二区三区国产视频| 日韩视频一区在线| 久久精品影视伊人网| 亚洲国产成人91精品| 日韩av影片在线观看| 亚洲天堂网在线观看| 国产精品久久久久久久久久ktv| 亚洲精品日韩av| 亚洲精品小视频在线观看| 欧美性极品xxxx娇小| 欧美久久精品午夜青青大伊人| 黑人巨大精品欧美一区二区| 操人视频在线观看欧美| 日韩中文字幕在线看| 97高清免费视频| 久久久久久国产精品| 久久精品久久精品亚洲人| 亚洲精品资源在线| 久久精品国产一区二区三区| 欧美精品www| 欧美猛男性生活免费| 伊人久久男人天堂| 久久久久久久久久婷婷| 欧洲成人午夜免费大片| 欧美成人免费视频| 久久久97精品| 黑人巨大精品欧美一区二区免费| 成人激情视频在线| 亚洲成人黄色网址| 亚洲第一区中文99精品| 精品久久久久久久中文字幕| 中文字幕综合一区| 久久久久久久久电影| 91在线播放国产| 98精品国产高清在线xxxx天堂| 欧美午夜丰满在线18影院| 国产精品成人品| 91午夜理伦私人影院| 国产精品成人播放| 青草青草久热精品视频在线网站| 亚洲欧美国产一区二区三区| 伊人久久久久久久久久| 国产一区二区三区在线观看视频| 欧美日韩精品在线视频| 国产综合在线视频| 久久精品国产精品亚洲| 九九热精品视频| 亚洲黄色在线看|