iOS 개발 튜 토리 얼 의 XLform 기본 사용 방법
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 설정 시의 태그 입 니 다.컨트롤 러 에서 이 방법 을 직접 호출 하여 폼 값 을 얻 을 수 있 습 니 다.위의 효과 도 설정 후의 폼 정 보 는 다음 과 같 습 니 다.
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Swift의 패스트 패스Objective-C를 대체하기 위해 만들어졌지만 Xcode는 Objective-C 런타임 라이브러리를 사용하기 때문에 Swift와 함께 C, C++ 및 Objective-C를 컴파일할 수 있습니다. Xcode는 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.