开发小妙招(一)
2020-04-02 本文已影响0人
贝尔特伦
注:此专栏不知道能写多少篇,但能写一篇是一篇吧,为各位在开发过程中,提供一些思路,使开发更简单,更具有趣味性。
category+表单
在开发过程中,我们经常遇到表单,就是数据的查看和修改,很多人用xib,很多人用纯代码,但不管哪种,还是有很多人一个个去找,一个个赋值,然后一个个取值,在这里我提供一个有趣的思路,利用category快速操作。
以下面页面为例:

第一步创建UITextFiled的category,增加一个属性
@interface UITextField (ZYDicKey)
@property (nonatomic, strong) NSString *keyName;
@end
#import "UITextField+ZYDicKey.h"
#import <objc/runtime.h>
static NSString *keyNameKey = @"keyNameKey";
@implementation UITextField (ZYDicKey)
- (void)setKeyName:(NSString *)keyName{
objc_setAssociatedObject(self, &keyNameKey, keyName, OBJC_ASSOCIATION_COPY);
}
- (NSString *)keyName{
return objc_getAssociatedObject(self, &keyNameKey);
}
@end
第二步,在创建或者赋值的时候,按照自己的数据格式,给其一个key值
NSArray *labelArr = @[@"姓名",@"联系方式",@"身份证号",@"家庭住址",@"详细住址",@"验证码"];
NSArray *dicKeyArr = @[@"name",@"phone",@"idcar",@"addr",@"addrInfo",@"code"];
for (int i = 0; i < labelArr.count; i ++) {
UILabel *txtLabel = [[UILabel alloc] init];
txtLabel.font = [UIFont systemFontOfSize:14];
txtLabel.textAlignment = NSTextAlignmentRight;
[alertView addSubview:txtLabel];
UITextField *txtF = [[UITextField alloc] init];
txtF.font = txtLabel.font;
txtF.tag = 202003251016 + i;
txtF.borderStyle = UITextBorderStyleRoundedRect;
[alertView addSubview:txtF];
txtLabel.text = [NSString stringWithFormat:@"%@: ",labelArr[i]];
txtF.keyName = dicKeyArr[i];
txtF.placeholder = [NSString stringWithFormat:@"请输入%@",labelArr[i]];
}
第三步,在取值的时候,key值作为key,text作为value放进Dic
NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
for (UIView *ssubV in sureBtn.superview.subviews)
if ([ssubV isKindOfClass:[UITextField class]]) {
UITextField *txtF = (UITextField *)ssubV;
if (txtF.text && txtF.text.length > 0) {
dic[txtF.keyName] = txtF.text;
}
}
}