FormKit.m is a library that helps building form with table view.
UI sample:
Code sample:
self.formModel = [FKFormModel formTableModelForTableView:self.tableView navigationController:self.navigationController]; self.formModel.labelTextColor = [UIColor blackColor]; self.formModel.valueTextColor = [UIColor lightGrayColor]; [FKFormMapping mappingForClass:[Movie class] block:^(FKFormMapping *mapping) { [mapping sectionWithTitle:@"Information section" identifier:@"info"]; [mapping mapAttribute:@"title" title:@"Title" type:FKFormAttributeMappingTypeText]; [mapping mapAttribute:@"releaseDate" title:@"ReleaseDate" type:FKFormAttributeMappingTypeDate]; [mapping mapAttribute:@"suitAllAges" title:@"All ages" type:FKFormAttributeMappingTypeBoolean]; // Read-only field [mapping mapAttribute:@"shortName" title:@"ShortName" type:FKFormAttributeMappingTypeLabel]; [mapping mapAttribute:@"numberOfActor" title:@"Number of actor" type:FKFormAttributeMappingTypeInteger]; [mapping mapAttribute:@"content" title:@"Content" type:FKFormAttributeMappingTypeBigText]; // Select fields using a picker or pushing a selection view controller [mapping mapAttribute:@"choice" title:@"Choices" showInPicker:NO selectValuesBlock:^NSArray *(id value, id object, NSInteger *selectedValueIndex){ *selectedValueIndex = 1; return [NSArray arrayWithObjects:@"choice1", @"choice2", nil]; } valueFromSelectBlock:^id(id value, id object, NSInteger selectedValueIndex) { return value; } labelValueBlock:^id(id value, id object) { return value; }]; [mapping buttonSave:@"Save" handler:^{ }]; [self.formModel registerMapping:mapping]; }]; [self.formModel loadFieldsWithObject:movie];
[formMapping validationForAttribute:@"title" validBlock:^BOOL(NSString *value, id object) { return value.length < 10; } errorMessageBlock:^NSString *(id value, id object) { return @"Text is too long."; }];