iOS 개발 튜 토리 얼 의 XLform 기본 사용 방법

8218 단어 iosxlform쓰다
머리말
iOS 개발 에서'폼'인 터 페 이 스 를 개발 합 니 다.필드 가 조금 더 많은 것 은 보통 UITableView 로 합 니 다.XLform 은 바로 이러한 프레임 워 크 입 니 다.동적 표 보기 의 가장 강력 한 iOS 라 이브 러 리 를 만 들 고 폼 기능 을 실현 하 며 매우 간단 하고 편리 합 니 다.하지만 안 타 깝 게 도 많은 글 을 검색 해 봤 는데 공식 문서 만 번역 하고 많은 사람들 이 이 라 이브 러 리 를 사용 할 때 공식 문서 에 의 해 멀리 끌 려 갔 을 수도 있 습 니 다.어떻게 구체 적 으로 사용 해 야 할 지 모 르 겠 습 니 다.마침 최근 에 도 이 라 이브 러 리 를 사용 해 야 하기 때문에 입문 용 글 을 써 서 참고 하 시기 바 랍 니 다.
다음은 이 라 이브 러 리 의 간단 한 구조 도 입 니 다.

항목 가 져 오기
CocoaPods 를 사용 하거나 라 이브 러 리 파일 을 수 동 으로 가 져 오 려 면 프로젝트 원본 파일 을 직접 가 져 오 는 방식 을 선택 하 십시오.

항목 가 져 오기
2.개조 폼 뷰 컨트롤 러
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
3.구조 표

- (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.XLformView Controller 는 UITableView DataSource,UITableView Delegate 를 실현 하고 UITableView 를 가지 고 있 습 니 다.이것 은 이러한 성명 에서 알 수 있 기 때문에 UITableView,UITableView DataSource,UITableView Delegate 의 방법 은 모두 정상적으로 사용 할 수 있 습 니 다.

@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.모든 폼 의 구체 적 인 정 보 는 마지막 에 XLformRow Descriptor 에 발 을 들 여 놓 습 니 다.이 를 통 해 서로 다른 스타일 의 폼 항목 을 설정 할 수 있 습 니 다.구조 함수 의 rowType 을 통 해 구체 적 인 폼 유형 을 지정 합 니 다.이 프레임 워 크 는 매우 풍부 한 rowType 을 제공 하고 구체 적 으로 관청 문서 설명 을 참고 할 수 있 습 니 다.
4.설정 폼 항목 을 더욱 세분 화 하려 면 XLformRow Descriptor 의 속성 을 빌려 설정 해 야 합 니 다.

@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"];
여기 키 의 쓰기 에 주의 하 세 요.바로 KVC 의 쓰기 입 니 다.다른 속성 은 이에 따라 유추 된다.
5.설정 한 폼 의 값 을 어떻게 가 져 옵 니까?사실 매우 간단 합 니 다.이 프레임 워 크 는 formValues 방법 을 제공 합 니 다.반환 유형 은 NSDictionary 입 니 다.그 중에서 key 는 XLformRow Descriptor 설정 시의 태그 입 니 다.컨트롤 러 에서 이 방법 을 직접 호출 하여 폼 값 을 얻 을 수 있 습 니 다.위의 효과 도 설정 후의 폼 정 보 는 다음 과 같 습 니 다.

총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기