Giter VIP home page Giter VIP logo

ibaforms's Introduction

IBAForms IS NO LONGER ACTIVELY MAINTAINED!

Hello good people. This is Sean, the original creator of IBAForms. When I first created IBAForms it was to solve some specific problems I found trying to create forms for the iPhone apps I was developing at the time. Over the years it's received varying amounts of maintenance on the ittybittydude branch based on our consulting, but a large part of that was (and continues to be) done on the realestate-com-au branch.

As iOS moved forward and our consulting took us in different directions, IBAForms got less and less love from us even though many of you are still using, and presumably find value in it. Rather than removing the code from the ittybittydude branch we're leaving it here with this notice to hopefully make new-comers aware that the library is no longer being maintained.

If you're looking for an alternate forms framework, check out:

If you're still keen on IBAForms it'd be worth checking out one of the many active branches.


IBAForms

IBAForms is a framework for building data entry screens on the iPhone. You can quickly make forms using the built-in form field types or create your own custom fields and the user interfaces used to enter data for them. It is an Objective-C library that provides an abstraction layer above common UIKit classes such as UITableView and UITableViewCell.

Features

IBAForms:

  • Provides a set of common form field types (text, password, boolean, date, pick list).
  • Manages focus and navigation between form fields.
  • Supports binding a form to its backing model via KVC.
  • Supports transformation of form values via NSValueTransformer.
  • Provides basic styling capabilities at the form, section and field level.
  • Provides extension points for creating your own custom form fields.

Screenshots

These screenshots are form the showcase application in the samples directory. They demonstrate the various out-of-the-box features of IBAForms.

Basic Fields

Advanced Fields

Showcase

Showcase Form

When you run the showcase application you'll be presented with a form that allows you to specify how you'd like the sample form to run. You can use this to test out the various ways in which a form may be presented (e.g. grouped or ungrouped tableview, etc).

Adding IBAForms to your project

  1. Drag the IBAForms.xcodeproj project in to your XCode 4 project. You might want to drag it in to the Frameworks directory to keep it out of the way. Leave the default options 'Create groups for any added folders' and 'Add to targets (Your Project)' selected and press Finish. If you get an empty item in the sidebar displaying "IBAForms.xcodeproj", you probably have other Xcode project windows open. Close them and try again.
  2. Select your project from the XCode sidebar and then the target you want to add IBAForms to.
  3. Select the Build Phases tab.
  4. Under the Target Dependencies group, click the plus button, select the IBAForms static library target and press Add.
  5. Under the Link Binary Libraries group, click the plus button, select libIBAForms.a and press Add.
  6. Add IBAForms/library/headers to the target's Header Search path. This will need to be a relative path based on where the IBAForms repository is located relative to your project. For the IBAFormsShowcase example this path is $(SOURCE_ROOT)/../../library/headers.
  7. Add -all_load and -ObjC to Other Linker Flags.

About

IBAForms is brought to you by Itty Bitty Apps. If you like IBAForms, or you've used it in one of your projects, drop us a line, we'd love to hear about it.

http://ittybittyapps.com

License

Copyright 2010 Itty Bitty Apps Pty Ltd

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

ibaforms's People

Contributors

aidansteele avatar chrismiles avatar florinpatrascu avatar rea-myles-abbott avatar sadatrahman avatar sampage avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ibaforms's Issues

Support for removing form fields

I'm building a form where some read-only fields become editable after authentication.

It would be nice to be able to remove fields and replace them at runtime. (In my case substitute editable fields for the readonly ones).

Currently, I'm working around this by: Having an abstract data-source that defines the methods to build the fields and two concrete classes that build either readonly or editable fields. . . substitue the datasource after auth.

iOS6 and hiddenCellCache

In my app I'm experiencing a hang with repeated form reloads. (setting the formDataSource on an instance of an IBAFormViewController repeatedly). It doesn't happen with a simple tableView reloadData, but does after repeatedly calling setFormDataSource:

I've narrowed the problem down to the hiddenCellCache. If I comment out the following in IBAFormFieldCell then the hang goes away:

  • (void)didMoveToWindow {
    if (self.window == nil) {
    NSAssert((self.hiddenCellCache != nil), @"Hidden cell cache should not be nil");
    // [self.hiddenCellCache addSubview:self];
    }
    }

I haven't figured out why this hack isn't working in iOS6, nor how to otherwise fix it.. By disabling it in this way the next/previous functionality will break (which actually I'm OK with in this app.)

Is anyone else experiencing this and do you have any insights?

TableView bounces when navigating between sections and/or form fields

Steps to reproduce:

  1. Launch the IBAFormsShowcase app.
  2. Navigate to the "Traits & Transformations" section.
  3. Tap on [Previous] to go to the last field within the "Pick Lists" section. You should notice a rapid bouncing of the table view as it animates the focus on to the "Multiple" field under the "Pick Lists" section.

Slider FormField

Hi there,

Great work on this product, it makes my life a lot easier.

On a recent project, I found need for a slider form field but noticed that this widget is absent from IBAForms. I wrote a custom class based partially on the boolean form field. I'd like to contribute it upstream.

Cannot clear text from fields of sections that don't have focus

I have two sections, each with text fields.

If i have the user click a button and try to programatically reset these fields to empty values:

        // Clear the input from the text fields of all sections
        for (IBAFormSection *section in self.formDataSource.sections) {
            for (id formField in section.formFields) {
                if([formField isKindOfClass:[IBATextFormField class]]) {
                    ((IBATextFormField*)formField).textFormFieldCell.textField.text = @"";
                }
            }
        }

The only time that the fields in the first section will get cleared is if it had focus.

Newer tag for use with CocoaPods

Hi,
I'm using CocoaPods to manage dependencies, and the Podspec for this project is pointing at the year-old 1.0.0 tag. Would you mind creating a newer tag on the repo so we can create an updated Podspec that points there?

Thank you!

TextForm field issue with empty value

Hi,

I have noticed that if I have at least 2 text fields in one section, and start filing data in order so first one is filled, then second one is filled and then I tap at custom button on view that process values, then the second text field is empty (nil). "textFieldShouldReturn", nor "deactivate" is not called at all. I'm not sure why. (iOS 5.0.1)

label widh

Hi,
I've tried to setup :

IBAFormFieldStyle *style = [[IBAFormFieldStyle alloc] init];
style.labelFrame = CGRectMake(style.labelFrame.origin.x, style.labelFrame.origin.y, style.labelFrame.size.width + 100, style.labelFrame.size.height);

however this make label view larger, but input field is not shrinked. Is there any other way to deal with field label width other than labelFrame?

IBAPickListFormField with NSDictionary options how?

Hello,
I've a NSDictionary with Object like City Names and Key like a number identification, how can i use this scheme with IBAPickList? I've see only NSArray. It's possible to create a transformer for this?

Thanks

Add support for form field lookup using key paths

Given an IBAFormDataSource data_source, and a valid key path key_path which is mapped to one or more IBAFormField item(s), provide a method with the following signature on the IBAFormDataSource class:

- (NSArray *)formFieldForKeyPath:(NSString *)keyPath;

Example:

NSArray *form_fields_array = [data_source formFieldForKeyPath:key_path];

Form Validation & Clear form

HI,
I look around the code and some Google search. Is there functions for Form Validation in IBAForms?

I also need to reset or clear form after a record is added so that i can add another. Does this function have? or any mechanism to get this done?

Your suggestions are much appreciated

Regards;

CompleteForm:

When completing the form, the field that was last edited (has the current edit in it (cursor, if you will)) isn't saved to the dictionary as it has not finished editing. How can do you resign the firstresponder for this field such that the setModelValue will save the value to the dictionary so it can be processed in the completeForm?

- (void)completeEditForm:(id)sender{


    //Validate

    if ([self.itemModel valueForKey:@"number"] == nil || [[self.itemModel valueForKey:@"number"] isEqualToString:@""]) {
       //DO SOMETHING
     }
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.