iOS Icon

iOS

iOS is the operating system for Apple's mobile products.
62 Stories
All Topics

iOS changelog.com/posts

KGNoise — The easiest way to draw noise in Objective-C

Today David Keegan released KGNoise. It’s hands down the simplest way to draw noise on iOS or Mac. There’s two simple class methods to draw noise: + (void)drawNoiseWithOpacity:(CGFloat)opacity; + (void)drawNoiseWithOpacity:(CGFloat)opacity andBlendMode:(CGBlendMode)blendMode; David even provides a UIView or NSView (depending on which platform you’re building for) subclass that wraps up this behavior nicely. Here’s the interface: @property (strong, nonatomic) NSColor/UIColor *backgroundColor; @property (nonatomic) CGFloat noiseOpacity; @property (nonatomic) CGBlendMode noiseBlendMode; Since NSView doesn’t have a backgroundColor property, he adds one for you. Super handy. Lots of designs, including Apple’s, have been using noise lately. KGNoise makes it dead simple to accomplish this now. Definitely give it a look!

read more

iOS changelog.com/posts

Cupertino - Mechanize the Apple Dev Center

Cupertino is a great new tool by the amazing Mattt Thompson: Automate administrative tasks that you would normally have to do through the Apple Dev Center websites. Life’s too short to manage device identifiers by hand! You can easily list devices like this: $ ios devices:list Easily add one like this: $ ios devices:add "Sam's iPhone":abcdefg... There’s support for the following commands: devices:add devices:remove certificates:list [-e development|distribution] certificates:add [-e development|distribution] certificates:download CERTIFICATE_NAME certificates:revoke CERTIFICATE_NAME app_ids:list app_ids:new Definitely worth checking out if you spend any amount of time in the iOS Provisioning Portal. Thanks Mattt!

read more

iOS changelog.com/posts

BubbleWrap - Cocoa wrappers and helpers for RubyMotion (Ruby for iOS) - Making Cocoa APIs more Ruby like, one API at a time.

BubbleWrap is “a collection of (tested) helpers and wrappers used to wrap CocoaTouch code and provide more Ruby like APIs” for RubyMotion. There is a ton of great stuff in BubbleWrap. One of the most interesting things I’ve seen in awhile is EventMachine implemented using GCD. If you’re doing any RubyMotion work, I think you should definitely checkout BubbleWrap!

read more

iOS changelog.com/posts

JASidePanels - Reveal side ViewControllers similar to Facebook/Path's menu

JASidePanels is a UIViewController container designed for presenting a center panel with revealable side panels - one to the left and one to the right. The main inspiration for this project is the menuing system in Path 2.0 and Facebook’s iOS apps. Recently, I was looking for a library for the Path and Facebook style menu. After trying several, JASidePanels was the clear winner. It’s highly customizable, supports orientation changes, and works on iPad too! Configuring is dead simple: JASidePanelController *viewController = [[JASidePanelController alloc] init]; viewController.leftPanel = [[JALeftViewController alloc] init]; viewController.centerPanel = [[UINavigationController alloc] initWithRootViewController:[[JACenterViewController alloc] init]]; viewController.rightPanel = [[JARightViewController alloc] init]; self.window.rootViewController = viewController; The source and a demo project is on GitHub.

read more

iOS changelog.com/posts

MPFoldTransition - Easily add custom folding and page-flipping transitions to UIViews and UIViewControllers

MPFoldTransition is a set of classes to add folding-style transitions to iOS 5 projects. This is a really amazing project. Making these fold and flip transitions is a ton of work and Mark Pospesel has made it dead simple. You can easily transition views using different styles with one method call: + (void)transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)duration style:(MPFoldStyle)style transitionAction:(MPTransitionAction)action completion:(void (^)(BOOL finished))completion; There are versions for UIViewControllers as well. Check out the source on GitHub, blog post and demo app.

read more

iOS changelog.com/posts

SSPullToRefresh - Simple pull to refresh view for iPhone

As I continue to dive into iOS development, I’m on the lookout for time saving Cocoa projects. Sam’s SSPullToRefresh is an easy, customizable way to add pull-to-refresh views like those made popular in Loren Brichter’s original Tweetie for iPhone app. SSPullToRefresh hides all the pulling and animating logic away, leaving you to implement what you care about - fetching and refreshing your view. - (void)viewDidLoad { [super viewDidLoad]; self.pullToRefreshView = [[SSPullToRefreshView alloc] initWithScrollView:self.tableView delegate:self]; } - (void)refresh { [self.pullToRefreshView startLoading]; // Load data... [self.pullToRefreshView finishLoading]; } - (void)pullToRefreshViewDidStartLoading:(SSPullToRefreshView *)view { [self refresh]; } You can use a couple of provided content views or you can subclass and implement your own. Check out the source on GitHub or see it in action in Cheddar.

read more

iOS changelog.com/posts

MGTileMenu - pop-up tile-based contextual menu for iOS5

MGTileMenu is an innovative context menu for iOS from Matt Gemmell. Resembling Path’s oft imitated corner menu in some respects, it appears to be more contextual than navigational, as the screencast demonstrates: Matt’s introductory blog post provides a deep introduction on the design or you can grab the source on GitHub. The license requires attribution, or you can purchase a non-attribution license online.

read more

iOS changelog.com/posts

Ruby Motion Samples - Write iPhone Apps In Ruby

RubyMotion was just released by Laurent Sansonetti, the creator of MacRuby. RubyMotion lets you write iOS apps in Ruby! RubyMotion is a revolutionary toolchain for iOS. It lets you quickly develop and test native iOS applications for iPhone or iPad, all using the awesome Ruby language you know and love. RubyMotion is a commercial product with introductory pricing of $149. We wanted to cover it on The Changelog anyway since it’s such an exciting new tool with an open source heritage. Writing Objective-C in Ruby is really fantastic, especially for Ruby engineers new to iOS. You can use all of the Ruby features like mixins, monkey patching, etc but on Objective-C objects. So when you make a string, it’s really an NSMutableString which is a Ruby String in MacRuby. Probably the coolest thing about RubyMotion is that it statically compiles your Ruby code so it doesn’t have to include the entire Ruby source and an interpreter. In theory, it should be just as fast as Objective-C code. RubyMotion even has an interactive REPL. See it in action in their demo. Skip to 3:58 in if you just want to see the REPL. There’s a ton of stuff in RubyMotion that is just fantastic like the build system, REPL, testing, etc. Read my full review on my blog. Also, there are several sample applications on GitHub.

read more

iOS changelog.com/posts

Bwoken - iOS UIAutomation testing in CoffeeScript

Testing iOS apps is hard. Apple’s UI Automation lets you write test scripts in JavaScript and simulate user interaction, but who wants to hang out in the Instruments GUI app? Bendyworks has improved on the process, however, bringing the simplicity of Rake and the elegance of CoffeeScript to your UI Automation tests: #import "../../../../Pods/tuneup_js/tuneup.js" #import "helpers/TravisCI.js" test 'Favoriting a repository', (target, app) -> RepositoriesScreen.tapRepositoryNamed 'CITravis by Travis-ci' BuildsScreen.addToFavorites(app) BuildsScreen.back() RepositoriesScreen.tapFavorites() FavoritesScreen.assertFavoriteNamed 'CITravis by Travis-ci' FavoritesScreen.tapAll() test 'Unfavoriting a repository', (target, app) -> RepositoriesScreen.tapFavorites() FavoritesScreen.assertFavoriteNamed 'CITravis by Travis-ci' FavoritesScreen.tapFavoriteNamed 'CITravis by Travis-ci' BuildsScreen.removeFromFavorites(app) BuildsScreen.back() FavoritesScreen.assertNoFavoriteNamed 'CITravis by Travis-ci' FavoritesScreen.tapAll() This single test can be run from the command line with: $ RUN=iphone/favorites rake Check out the project website, source on GitHub, or introductory video for more. Also be sure to check out their TravisCI.app, a mobile client for Travis CI, for a real-world example.

read more

iOS changelog.com/posts

DCIntrospect - Inspect Element for iOS views

Web developers have long enjoyed the “Inspect Element” features of Firebug and WebKit developer tools to poke around inside their pages at runtime. Patrick Richards, a mobile developer from down under, has created DCIntrospect, a library of visual debugging tools for iOS. Once added to your project, DCIntrospect listens for shortcut keys to toggle view outlines, nudge views on screen, toggle view visibility, print view properties to the console, and more. To use, be sure you’ve set the DEBUG environment variable. It’s also a good idea to target the simulator explicitly, even though DCIntrospect will work on the device as well. [window makeKeyAndDisplay] // always call after makeKeyAndDisplay. #if TARGET_IPHONE_SIMULATOR [[DCIntrospect sharedIntrospector] start]; #endif Check out the source on GitHub for a full list of keybindings and instructions on how to customize.

read more

iOS changelog.com/posts

MBRequest - Easier API wrappers in iOS and OSX

A good API wrapper should handle network transport, payload serialization/deserialization, and authentication, abstracting these details away in order to let the developer deal with the business domain of the API. Projects like Faraday, Requests, and others have made creating higher level wrappers much easier. MBRequest from Mobiata does the same for iOS and OSX: NSURL *url = [NSURL URLWithString:@"https://gdata.youtube.com/feeds/api/standardfeeds/top_rated?alt=json?time=this_week"]; NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:url]; [urlRequest setValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"]; MBJSONRequest *jsonRequest = [[[MBJSONRequest alloc] init] autorelease]; [jsonRequest performJSONRequest:urlRequest completionHandler:^(id responseJSON, NSError *error) { if (error != nil) { NSLog(@"Error requesting top-rated videos: %@", error); } else { NSArray *videos = [[responseJSON objectForKey:@"feed"] objectForKey:@"entry"]; for (NSDictionary *videoInfo in videos) { NSString *title = [[videoInfo objectForKey:@"title"] objectForKey:@"$t"]; NSString *author = [[[[videoInfo objectForKey:@"author"] objectAtIndex:0] objectForKey:@"name"] objectForKey:@"$t"]; NSLog(@"'%@' by %@", title, author); } } }]; Check out the examples folder in the project source for implementation ideas.

read more

iOS changelog.com/posts

JTGestureBasedTableView - Buttonless interface for iOS like that found in Clear

A great effort by mobile developer James Tang to recreate that innovative UI pattern found in Clear: The README provides sample code to set up your UITableView and enable gesture recognition: #import "JTTableViewGestureRecognizer.h" @interface ViewController () <JTTableViewGestureAddingRowDelegate, JTTableViewGestureEditingRowDelegate> @property (nonatomic, strong) NSMutableArray *rows; @property (nonatomic, strong) JTTableViewGestureRecognizer *tableViewRecognizer; @end @implementation ViewController @synthesize tableViewRecognizer; - (void)viewDidload { /* : */ // In our examples, we setup self.rows as datasource self.rows = ...; // Setup your tableView.delegate and tableView.datasource, // then enable gesture recognition in one line. self.tableViewRecognizer = [self.tableView enableGestureTableViewWithDelegate:self]; } ... If you haven’t seen the Clear interface, be sure and check out the video demo: Sample source on GitHub.

read more

iOS changelog.com/posts

iOS-boilerplate: A base boilerplate template for iOS

iOS Boilerplate is a base template for iOS apps inspired by HTML5 boilerplate. iOS Boilerplate is tested on iPhone / iPod Touch devices with iOS 4.0 or greater. In a future it might support universal applications (iPhone + iPad) As of this posting, iOS Boilerplate is just an XCode project and is planned to be released as a true XCode template in the near future. Check out the source on GitHub and the project’s homepage for more details.

read more

iOS changelog.com/posts

scrollability: Native scrolling for the mobile web

Perhaps even more than advanced features like GPS, camera access, contacts, and App stores, the lack of viewport-aware position:fixed is what drives many apps to be developed as a native experience. Joe Hewitt who brought us Firebug and the Facebook iPhone app has released Scrollability, a single script with no external dependencies that allows developers to achieve near-native feeling scrolling, just by adding a few CSS classes to their markup. In just a few hours of its release, the project has over 250 watchers on GitHub. Joe includes a simple demo for iOS devices that demonstrates super smooth scrolling as well as fixed header and footer elements. [Source on GitHub]

read more

iOS changelog.com/posts

Node.js on your (jailbroken) iPhone

Nathan “Too Tall” Rajlich has gotten Node.js to run his jailbroken iPhone 4. If you’ve got SSH access on a jailbroken phone, simply extract the .deb package: dpkg -i node-v0.4.5-ios-arm-1.deb Now you can see if Node is running: $ node > require('os').cpus() [ { model: 'N90AP', speed: 0, times: { user: 9209240, nice: 0, sys: 6997410, idle: 255377220, irq: 0 } } ] Nate has created node-iOS to play with iOS-specific functionality with Node bindings: var iOS = require('iOS'); iOS.vibrate(); // Quick vibrate, like when you receive text message if (iOS.compass.available) { // true if the iDevice has a digital compass iOS.compass.on('heading', function(heading) { console.log(heading.magneticHeading); // Degrees relative to magnetic north }); } Of course if you want to play with Node on mobile without jailbreaking your phone, Node.js powers the JavaScript services in WebOS. [Source on GitHub] [Blog post]

read more

iOS changelog.com/posts

UIDickBar: Annoying Twitter style #dickbar for your iOS apps

Ever wanted to add an obtrusive Dickbar to your iOS apps? Wait no more, for Ching-Lan HUANG 黃青嵐 AKA @digdog has packaged up this UI tragedy for you to use in less than ten lines of Objective-C: UIDickBar *dickBar = [[UIDickBar alloc] initWithDickTitle:@"#DickBar" dickBadge:@"Stupid" actionBlock:^{ // Anything you want to do after UIDickBar tapped [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://digdog.tumblr.com"]]; }]; [dickBar showInView:self.view]; [dickBar release]; [Source on GitHub] [Blog post]

read more

iOS changelog.com/posts

Titanium Modules: Starter pack for extending Appcelerator Titanium

If you caught Episode 0.0.8 with Marshall Culpepper, then you already know that Appcelerator Titanium Mobile is a great way for JavaScript developers to write native mobile applications for iOS and Android without needing to learn Objective-C or Java. However, if you do speak Objective-C or Java you might not know you can extend Titanium and provide JavaScript hooks for your own code that you might want to share with other projects (and even other folks) via custom modules. You can even build extensions in JavaScript as well. The Ti+Plus Modules Starter Pack is a bundle of sample projects demonstrating how to extend Titanium. The source code for these projects augment the iOS module development and Android module development guides on the Titanium documentation site. Be sure to check out the sample source for Flurry, Paint, and this one from AdMob: #import "TiAdmobModule.h" #import "TiBase.h" #import "TiHost.h" #import "TiUtils.h" @implementation TiAdmobModule // this is generated for your module, please do not change it -(id)moduleGUID { return @"0d005e93-9980-4739-9e41-fd1129c8ff32"; } // this is generated for your module, please do not change it -(NSString*)moduleId { return @"ti.admob"; } #pragma mark Lifecycle -(void)startup { // this method is called when the module is first loaded // you *must* call the superclass [super startup]; NSLog(@"[INFO] AdMob module loaded",self); } -(void)shutdown:(id)sender { // this method is called when the module is being unloaded // typically this is during shutdown. make sure you don't do too // much processing here or the app will be quit forceably // you *must* call the superclass [super shutdown:sender]; } If you’d like to get started with Titanium Mobile, I’ll be joining Kevin and Marshall at Red Dirt Ruby Conf and doing a special Zero-to-App training session to get you up and running with Titanium. We’ll even throw in a little CoffeeScript.

read more

iOS changelog.com/posts

X-Callback-URL: URL specification for iOS interapp communication

URLs are one of those things about the web that we often take for granted. As developers, we can request resources and send users to other destinations just by knowing a location on the Internet. The mobile landscape is a bit different. While most mobile applications speak Web, consuming REST-ful APIs and other web resources, quite often they’re little silos of vertical, site or brand-specific functionality. Did you know that for iOS developers Apple makes it possible to register your own URL scheme, as in this Gowalla example: Launch with gowalla:// Open Paddington Station spot gowalla://spots/19264 Open pengwynn user 123 gowalla://users/pengwynn Open Walt Disney World Resort trip gowalla://trips/24622 The list of known iOS applications supporting OpenURL is growing daily. Beyond application launching As handy as these custom iOS URL schemes are in launching other applications, mobile developer Greg Pierce wants to the community to extend the idea of custom URL schemes and adopt a standard for inter-app communication. X-Callback-URL is a draft specification for one-way and two-way communication between mobile apps on iOS and looks like this: [scheme]://[host]/[version]/[action]?[x-callback parameters]&[action parameters] Let’s look at a real world example from Greg’s popular Terminology, a language reference app for iPhone and iPad: terminology://x-callback-url/1.0/lookup?text=a%20good%20deal scheme: The app’s custom URL scheme, terminology in the above example host: Callback URLs are identified by a host value of x-callback-url version: The X-Callback-URL spec version, currently 1.0 action: The action to perform in the target app. In this case, Terminology will perform a lookup action. x-callback parameters: Optional. Not used in this example action parameters: The parameters to pass to the executing action, “a good deal” in this example This approach provides a robust way to not only launch an app, but also request that the app handle an action, which may or may not have a UI associated with it. Two-way communication The real power of X-Callback-URLs lies in two-way inter-app communication. By using the x-callback parameters in the spec, we can ask the target app to call us back on our own URLs, even handling success and error scenarios. Sort of like custom HTTP headers, these callback parameters are identified with an x- namespace: x-source : The friendly name of the source app calling the action. If the action in the target app requires user interface elements, it may be necessary to identify to the user the app requesting the action. x-success : If the action in the target method is intended to return a result to the source app, the x-callback parameter should be included and provide a URL to open to return to the source app. On completion of the action, the target app will open this URL, possibly with additional parameters tacked on to return a result to the source app. If x-success is not provided, it is assumed that the user will stay in the target app on successful completion of the action. x-error : URL to open if the requested action generates an error in the target app. This URL will be open with at least the parameters “errorCode=code&errorMessage=message. If x-error is not present, and a error occurs, it is assumed the target app will report the failure to the user and remain in the target app. Here’s how you’d build a URL to allow your users to select some text in your app, choose a replacement in Terminology, and have to return back to your app. terminology://x-callback-url/1.0/replace?text=white&x-source=MyAppName&x-success=myappurl://x-callback-url/1.0/returnAction Greg has a great screencast that demonstrates the process end-to-end: Be sure and check out the full documentation for all of Terminology’s callbacks on Greg’s site as well as implemenation examples on GitHub. If you decide to implement X-Callback-URL in your application, please add it to the directory so the community knows how to integrate with you. [Source on GitHub] [Home page] [@xcallbackurl on Twitter] [Discuss on HackerNews]

read more

iOS changelog.com/posts

treesaver: HTML5, JavaScript library for creating magazine style layouts for iPad and web

A new breed of mobile devices led by the Apple iPad are changing the way we think about web layout. Applications like Flipboard and Feedly have led the charge in a resurgence of magazine-style layouts both on the web and on the tablet. Treesaver from Filipe Fortes is a new JavaScript framework for creating magazine-style layouts using standards-compliant HTML and CSS. Weighing in at just 25KB, Treesaver’s feature set is impressive providing support for grid and column layouts, custom UI’s, repeating content, cover pages, figures and illustrations, and analytics. The Treesaver wiki has a nice walkthrough to get you started and the project ships with an HTML boilerplate for both your content: <!doctype html> <html class="no-js no-treesaver"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,height=device-height,initial-scale=1,minimum-scale=1,maximum-scale=1"> <title>Sample Treesaver Page</title> <link rel="stylesheet" href="style.css"> <link rel="resources" href="resources.html"> <script src="treesaver-0.9.0.js"></script> </head> <body> <article> <p>This markup is an example of a page using Treesaver for layout. It is not very exciting right now.</p> </article> </body> </html> and your resources: <!doctype html> <html> <body> <div class="chrome"> <div class="viewer"></div> </div> <div class="grid"> <div class="column"></div> </div> <div class="loading"> Loading </div> <div class="error"> Error </div> </body> </html> Be sure and check out the impressive demos, especially on the iPad. With this first public release, Filipe admits the project still needs a lot of work. But the GitHub repo has a deep wiki and is very active. If you’re interested in contributing, you can help knock out the growing list of bugs and features. [Source on GitHub] [Homepage]

read more

iOS changelog.com/posts

jQuery Mobile Alpha 3 released

Hot on the heels of the jQuery 1.5 release, jQuery Mobile Alpha 3 is out. A massive update of nearly 500 commits and over 150 bug fixes, Alpha 3 sports a totally refactored Ajax navigation that in our initial tests is much zippier (at least on the iPhone 4). Check out the official announcement and updated demo or grab the code. [Source on GitHub] [Announcement] [Demo]

read more

iOS changelog.com/posts

nib2objc: Convert iPhone NIB files into Objective-C code

Interface Builder is one of the coolest things about Cocoa development. Being able to draw your interfaces visually can save you tons of otherwise tedious code to create layouts and set visual styles for your user interface elements. Adrian Kosmaczewski, iPhone and iPad developer and creator of Device DNA and several other apps in the App Store turned us on to nib2objc, which is a brilliant name because it takes NIB (or XIB) files from Interface Builder and converts them to Objective-C. To run from the command line, simply run nib2objc, passing the path to your NIB file: nib2objc yourfile.xib > code.m The output is a rather nice looking set of UIKit objects and property assignments to match values from your NIB: // ... UIView *view6 = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 460.0)]; view6.frame = CGRectMake(0.0, 0.0, 320.0, 460.0); view6.alpha = 1.000; view6.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; view6.backgroundColor = [UIColor colorWithWhite:0.750 alpha:1.000]; view6.clearsContextBeforeDrawing = NO; // ... UIButton *button9 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; button9.frame = CGRectMake(167.0, 65.0, 72.0, 37.0); button9.adjustsImageWhenDisabled = YES; button9.adjustsImageWhenHighlighted = YES; button9.alpha = 1.000; button9.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleBottomMargin; button9.clearsContextBeforeDrawing = NO; button9.clipsToBounds = NO; button9.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter; // ... [button9 setTitleShadowColor:[UIColor colorWithWhite:0.000 alpha:1.000] forState:UIControlStateSelected]; // ... [view6 addSubview:button9]; // ... Bonus #1 As an added bonus, nib2objc includes a GUI to browse NIB files and even peer into their generated Objective-C code, complete with Fragaria-based syntax highlighting. Check the project home page for more details, not to mention the most minimalistic Redmine theme we’ve seen. Bonus #2 But wait, there’s more. We also stumbled across Adrian’s other project Bluwoki, a Bluetooth peer-to-peer walkie-talkie for iPhone and iPod Touch. Since my daughters get their Dad’s old hand-me-down iPhones, I may have to install this for them to have some fun around the house. Bluwoki is also open source, grab the code on GitHub. [Source on GitHub] [Home page]

read more

iOS changelog.com/posts

applitude: Elegant DSL to create iPhone apps in Eclipse

While language purists might balk at the growing popularity of projects that compile to Objective-C, the verbosity of the Cocoa framework has many developers looking for a faster way to create iPhone apps. Let’s face it, the vast majority of apps in the App Store follow a familiar pattern of making a network request, showing an activity indicator, parsing a JSON response, handling errors, loading a UITableView, and handling navigation to the next bit of data. Applitude is based on Applause, a nifty Domain Specific Language from Heiko Behrens and Peter Friese based on Xtext for creating iOS apps. Ralf Ebert has pared down Applause to have an iPhone focus to create Applitude. Here’s a sample: application Demo { view:Tabs() } tabview Tabs { tab { title: "Inventors" view: Inventors() } } type String mapsTo "NSString" entity Inventor { String name String imageUrl Invention[] inventions } entity Invention { String name } contentprovider AllInventors returns Inventor[] fetches JSON from "http://applitude.org/demo/inventors.json" selects "" tableview Inventors { Inventor[] inventors = AllInventors() title: "Inventors" section { cell Default for inventor in inventors { text: inventor.name image: inventor.imageUrl action: InventorDetail(inventor) } } } tableview InventorDetail(Inventor inventor) { title: inventor.name style: Grouped section { cell Value2 { text: "Name" details: inventor.name } } section { title: "Inventions" cell Default for invention in inventor.inventions { text: invention.name } } } This example creates a simple demo app based on some JSON: [ { "name" : "Thomas Edison", "imageUrl" : "http://applitude.org/demo/edison.jpg", "inventions" : [ { "name" : "Light bulb" }, { "name" : "Motion picture" }, { "name" : "Phonograph" } ] }, { "name" : "Alexander Graham Bell", "imageUrl" : "http://applitude.org/demo/bell.jpg", "inventions" : [ { "name" : "Telephone" } ] }, { "name" : "Nikola Tesla", "imageUrl" : "http://applitude.org/demo/tesla.jpg", "inventions" : [ { "name" : "Tesla coil" }, { "name" : "Alternating current" } ] } ] Applitude bundles popular open source iOS frameworks including TouchJSON, TouchXML, and ASIHTTPRequest. Visit the project home page for advanced usage, requirements, and installation instructions [Comment on Hacker News] [Source on GitHub] [Web site]

read more

0:00 / 0:00