Swift编程

开发小妙招(一)

2020-04-02  本文已影响0人  贝尔特伦

注:此专栏不知道能写多少篇,但能写一篇是一篇吧,为各位在开发过程中,提供一些思路,使开发更简单,更具有趣味性。

category+表单

在开发过程中,我们经常遇到表单,就是数据的查看和修改,很多人用xib,很多人用纯代码,但不管哪种,还是有很多人一个个去找,一个个赋值,然后一个个取值,在这里我提供一个有趣的思路,利用category快速操作。

以下面页面为例:


F4A489A57FBF0EDBED46F7AE4E83FCCA.png

第一步创建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;
             }
       }
  }
上一篇 下一篇

猜你喜欢

热点阅读