Add `indexable` & `PM::Table::Indexable`
ProMotion

A new way to easily build RubyMotion apps.
ProMotion is a RubyMotion gem that makes iOS development more like Ruby and less like Objective-C. It introduces a clean, Ruby-style syntax for building screens that is easy to learn and remember and abstracts a ton of boilerplate UIViewController, UINavigationController, and other iOS code into a simple, Ruby-like DSL.
class AppDelegate < PM::Delegate
def on_load(app, options)
open RootScreen.new(nav_bar: true)
end
end
class RootScreen < PM::Screen
title "Root Screen"
def push_new_screen
open NewScreen
end
end
class NewScreen < PM::TableScreen
title "Table Screen"
def table_data
[{
cells: [
{ title: "About this app", action: :tapped_about },
{ title: "Log out", action: :log_out }
]
}]
end
end
Features
| Screens | Navigation Bars | Tab Bars |
|---|---|---|
![]() |
![]() |
![]() |
| Table Screens | Grouped Tables | Searchable | Refreshable |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| iPad SplitScreens | Map Screens | Web Screens |
|---|---|---|
![]() |
![]() |
![]() |
...and much more.
Tutorials
Shows how to make a basic app in ProMotion. Updated in May.
http://www.clearsightstudio.com/insights/ruby-motion-promotion-tutorial
Screencasts
Shows how to create a Youtube app that shows Portland Trailblazer highlights.
http://www.clearsightstudio.com/insights/tutorial-make-youtube-video-app-rubymotion-promotion/
Sample Apps
Here's a demo app that is used to test new functionality. You might have to change the Gemfile source to pull from Github.
https://github.com/jamonholmgren/promotion-demo
Apps Built With ProMotion
View apps built with ProMotion (feel free to submit yours!)
Getting Started
Check out our new Getting Started Guide in the wiki!
What's New?
Version 1.0
- TODO
Usage
Check out the Basic Usage Examples in the wiki for usage examples.
API Reference
We've created a comprehensive and always updated wiki with code examples, usage examples, and API reference.
ProMotion API Reference
Help
If you need help, feel free to ping me on twitter @jamonholmgren or open an issue on GitHub. Opening an issue is usually the best and we respond to those pretty quickly.
Contributing
I'm very open to ideas. Tweet me with your ideas or open a ticket (I don't mind!) and let's discuss. It's a good idea to run your idea by the committers before creating a pull request. We'll always consider your ideas carefully but not all ideas will be incorporated.
Working on Features
- Clone the repos into
Your-Project/Vendor/ProMotion - Update your
Gemfileto reference the project asgem 'ProMotion', :path => "vendor/ProMotion/" - Run
bundle - Run
rake cleanand thenrake - Contribute!
Submitting a Pull Request
- Fork the project
- Create a feature branch
- Code
- Update or create new specs ** NOTE: your PR is far more likely to be merged if you include comprehensive tests! **
- Make sure tests are passing by running
rake spec(you can run functional and unit specs separately withrake spec:functionalandrake spec:unit) - Submit pull request
- Make a million little nitpicky changes that @jamonholmgren wants
- Merged, then fame, adoration, kudos everywhere
Primary Contributors
- Jamon Holmgren: @jamonholmgren
- Silas Matson: @silasjmatson
- Matt Brewer: @macfanatic
- Mark Rickert: @markrickert
- Many others
- Run
git shortlog -s -n -eto see everyone who has contributed.









