iOS 개발 의 XLform 사용법
항목 가 져 오기
CocoaPods 를 사용 하거나 라 이브 러 리 파일 을 수 동 으로 가 져 오 려 면 프로젝트 원본 파일 을 직접 가 져 오 는 방식 을 선택 하 십시오.
항목 가 져 오기.png
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
효과 도효과 도.png
총화
앞의 두 단 계 는 공식 문서 에서 찾 을 수 있 고 간단 합 니 다.관건 은 initializeForm 방법 에서 구체 적 으로 표를 구성 하 는 과정 입 니 다.여기 서 몇 가 지 를 강조 할 필요 가 있 습 니 다.
1.XLformView Controller 는 UITableView DataSource,UITableView Delegate 를 실현 하고 UITableView 를 가지 고 있 습 니 다.이 는 이러한 성명 에서 알 수 있 기 때문에 UITableView,UITableView DataSource,UITableView Delegate 의 방법 은 모두 정상적으로 사용 할 수 있 습 니 다.
@interface XLFormViewController : UIViewController
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 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
View의 레이아웃 방법을 AutoLayout에서 따뜻한 손 계산으로 하면 성능이 9.26배로 된 이야기이 기사는 의 15 일째 기사입니다. 어제는 에서 이었습니다. 손 계산을 권하는 의도는 없고, 특수한 상황하에서 계측한 내용입니다 화면 높이의 10 배 정도의 contentView가있는 UIScrollView 레이아...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.