Sha256: 845a51e178665e11d7f2da46b579c8ed400714f5e00fb6d4aa2c1f0d5a17de50

Contents?: true

Size: 1.91 KB

Versions: 7

Compression:

Stored size: 1.91 KB

Contents

# Motion Bindable

A simple data binding library for RubyMotion.

## Installation

Add this line to your application's Gemfile:

```ruby
gem 'motion_bindable'
```

And then execute:

```sh
$ bundle
```

If you want to use the default strategies that come with MotionBindable add
this to your `app_delegate.rb`:

``` ruby
def application(application, didFinishLaunchingWithOptions: launch_options)
  MotionBindable::Strategies.use
  true
end
```

## Usage

Add `include MotionBindable::Bindable` to make an object bindable:

```ruby
# Models

class Item
  include MotionBindable::Bindable
  attr_accessor :name
  attr_accessor :location

  def location
    @address ||= Address.new
  end
end

class Address
  attr_accessor :address
end
```

In your view controller, you can bind the object to a set of Views or any
other object:

```ruby
class ItemListViewController
  def viewDidLoad
    super
    @name_field = UITextField.alloc.initWithFrame [[110, 60], [100, 26]]
    @name_field.placeholder = "Name"
    view.addSubview @name_field

    @address_field = UITextField.alloc.initWithFrame [[110, 100], [100, 26]]
    @address_field.placeholder = "Address"
    view.addSubview @address_field

    @item = Item.new
    @item.bind_attributes({
      name: @name_field,
      location: {
        address: @address_field
      }
    })
  end
end
```

When `@name_field.text` or `@address_field.text` changes, so will your model!

### Strategies

The above example uses the `MotionBindable::Strategies::UITextField`.
which comes with MotionBindable. Take a look in
`lib/motion_bindable/strategies` for the available defaults. You can implement
your own strategies by extending `MotionBindable::Strategy` like so:

**TODO**

## Contributing

1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
motion_bindable-0.1.0 README.md
motion_bindable-0.0.6 README.md
motion_bindable-0.0.5 README.md
motion_bindable-0.0.4 README.md
motion_bindable-0.0.3 README.md
motion_bindable-0.0.2 README.md
motion_bindable-0.0.1 README.md