FormKit.m 0.4.0

FormKit.m 0.4.0

LangLanguage Obj-CObjective C
License Custom
ReleasedLast Release Dec 2014

Maintained by Unclaimed.

Depends on:
BWLongTextViewController~> 1.0
ActionSheetPicker2~> 0.1
BWSelectViewController>= 0

FormKit.m 0.4.0

  • By
  • Bruno Wernimont

FormKit.m is a library that helps building forms with a table view.

It also handles synchronization of data between your model and the view (cells) when the user makes edits.

Everything looks good on iPhone and iPad for iOS versions 6+.


Copy FormKit dir into your project.

Or with Cocoapods

pod 'FormKit.m', :git => "", :tag => "0.4.0"

Example code

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"
            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];

Form Mapping


[formMapping validationForAttribute:@"title" validBlock:^BOOL(NSString *value, id object) {
  return value.length < 10;
} errorMessageBlock:^NSString *(id value, id object) {
  return @"Text is too long.";


Bruno Wernimont


Bitdeli Badge