TestsTested | ✗ |
LangLanguage | Obj-CObjective C |
License | MIT |
ReleasedLast Release | Oct 2015 |
Maintained by Bogdan Poplauschi.
Dynamic forms for iPhone/iPad - iOS 6, 7 and later (inspired from BZGFormViewController).
Now integrated with the well known JVFloatLabeledTextField.
BPFormViewController
BPFormCell
implements BPFormCellProtocol
BPFormInputCell
- "abstract class" and base class for all input cells
BPFormInputTextFieldCell
uses BPFormTextField
BPFormFloatInputTextFieldCell
uses BPFormFloatLabelTextField
BPFormInputTextViewCell
uses BPFormTextView
BPFormFloatInputTextViewCell
uses BPFormFloatLabelTextView
BPFormButtonCell
BPFormInfoCell
implements BPFormCellProtocol
BPAppearance
Check the detailed class diagram.
Go to /Example, run pod install
, and run the target from BPFormsExample.xcworkspace
For any form you create, you should subclass BPFormViewController
or just instantiate it.
You can create simple input cells (BPFormInputTextFieldCell
) or input cells where the label floats above the text value (BPFormFloatInputTextFieldCell
- see screenshot).
Just set the properties you need and make sure you set the BPFormViewController
instance as delegate for the textField
.
shouldChangeBlock
is used to verify the data entered, so please add the verification code (see example).
BPFormFloatInputTextFieldCell *emailCell = [[BPFormFloatInputTextFieldCell alloc] init];
emailCell.textField.placeholder = @"Email";
emailCell.textField.delegate = self;
emailCell.customCellHeight = 50.0f;
emailCell.mandatory = YES;
emailCell.shouldChangeTextBlock =
BPValidateBlockWithPatternAndMessage(
@"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}",
@"The email should look like [email protected]");
BPFormButtonCell *signUpCell = [[BPFormButtonCell alloc] init];
signUpCell.button.backgroundColor = [UIColor blueColor];
[signUpCell.button setTitle:@"Sign Up" forState:UIControlStateNormal];
signUpCell.button.layer.cornerRadius = 4.0;
signUpCell.button.layer.masksToBounds = YES;
signUpCell.buttonActionBlock = ^(void){
NSLog(@"Button pressed");
};
formCells
contains an array of sections, each sections with its cellsself.formCells = @[@[emailCell, passwordCell, password2Cell, nameCell, phoneCell], @[signUpCell]];
[self setHeaderTitle:@"Please enter your credentials" forSection:0];
[self setFooterTitle:@"When you're done, press <<Sign Up>>" forSection:0];
// fonts
[BPAppearance sharedInstance].infoCellLabelFont = [UIFont systemFontOfSize:12];
// colors
[BPAppearance sharedInstance].headerFooterLabelTextColor = [UIColor lightGray];
// sizes
[BPAppearance sharedInstance].infoCellHeight = 25;