NetAdvantage for iOS: Native iPad & iPhone Controls for Apps

Jason Beres [Infragi / Tuesday, April 03, 2012

Today I am pleased to announce the upcoming release of our latest set of user experience controls,  NetAdvantage for iOS.   NetAdvantage for iOS will include the core controls you need to build high performance, highly visual iPad & iPhone applications.  In our first release, we’ll be shipping native, Objective C data grid and data chart controls, both optimized for the lower power Apple chips, built with performance and style in mind.  When it comes to control development on tablets and mobile phones, performance and battery life are critical success factors.  We’ve done a lot of work in both of those areas to make sure that your users will get a premium experience when interacting with these new controls.

Let’s take a look at what we’ll be offering in v1 in these native iOS controls.

iOS Grid Control

The iOS grid control (IG Grid) is more than your typical tabular grid, it can be styled and templated to look like almost anything.  Take a look at these screen shots of a few of the samples we’ll be including with the product.

 

 

Some of the key features we plan on shipping in v1 to help you create rich, interactive iPad grid applications include:

  • Column Resizing
  • Context Menu (Tap & Hold)
  • Data Source Helper
  • Deletion
  • Filtering
  • Grouping
  • Pull-down to re-load
  • Row Re-ordering
  • Scrolling Shortcut
  • Selection
  • Shortcut Bar
  • Sorting
  • Star ( * ) Sizing on Columns
  • Styling

 

As we design and implement features, we are making sure they makes sense in the context of the iPad or the iPhone , so the interactions will be consistent with UI patterns you are accustomed to on these devices.  And as you’ve come to expect with Infragistics grid controls, performance is critical, so we are designing with high performance and virtualization in mind.

The first question that usually gets asked about the grid is ‘how do I get data into this thing’.  So let’s talk about that for a minute.

Binding Data to the IG Grid

To get data into the grid, we’ve implemented a helper that will make it easier to bind arrays to the grid.  If you’ve done any iOS development, you know that there isn’t really the traditional bindings (at least coming from a .NET background).  Essentially you're providing an interface that implements a protocol that the view knows about, and the protocol methods provide the information that the IG grid needs to display data.

So here is typical code to bind an array to the IG Grid or a UITableView in iOS:

 

- (int) numberOfColumnsInGridView:(IGGridView*)gridView

{

return 10;

}

- (IGGridViewCell *) gridView:(IGGridView *)gv cellAt:(IGCellPath*)path

{

NSString *cellId = @"cellId";

IGGridViewCell *cell = [gv dequeueReusableCellWithIdentifier:cellId];

if (! cell)

cell = [[IGGridViewCell alloc] initWithReuseIndentifier:cellId];

cell.textLabel.text = path.description;

return cell;

}

-(NSString *)gridView:(IGGridView *)gridView titleForHeaderInColumn:(int)column

{

return [NSString stringWithFormat:@"Col: %d", column];

}

- (int) gridView:(IGGridView*)gridView numberOfRowsInSection:(int)section

{

return 500;

}

 

 

To make this easier, we’ve implemented classes that we call DataSourceHelpers that take an array of data, and do a bunch of the wiring up for you, so that you can write less code. Basically it looks at the data you've given the helper class, and then looks for the properties on the objects and auto generates the columns.  For example, to bind data to the IG Grid using the IGGridViewDataSourceHelper, it will look like this:

 

NSArray* data = [DummyData generateData:250];

    IGGridViewDataSourceHelper* dataSource = [[IGGridViewDataSourceHelper alloc]init];

    dataSource.data = data;

    _gridView.dataSource = dataSource;

 

 

So we are doing work to ensure that you get a great experience (and simpler) when working with data and getting it into the IG Grid.  We’ll be looking forward to your feedback on how we can simplify this even further.

 

iOS Chart Control

The new IG Chart is based on the core API of our market leading high performance XAML charting control.  Internally we have a series of 2-way code translation technologies that takes C# code and churns out JavaScript and Objective C in our CI builds.  This helps us deliver the core frameworks faster, keeping consistency for you across platforms.  We tailor and optimize the public API that you use, so the experience is consistent with what you’d expect in the platform you are building in. 

So on the charting side, you can expect synergy in features and capability across  iOS, XAML, HTML5, WinJS & WinRT.  In v1 of the IG Chart control for iOS, we have all of the business charting scenarios you’d need, plus more.

Let’s take a look at that list of v1 charts:

 

Category Series

  • Area
  • SplineArea
  • Bar
  • Column
  • Line
  • Spline
  • StepLine
  • Waterfall

 

 

Range Category Series

  • RangeArea
  • RangeColumn   

 

 

Financial

  • FinancialPriceSeries
  • TypicalPriceIndicator
  • AbsoluteVolumeOscillatorIndicator
  • AverageTrueRangeIndicator
  • AccumulationDistributionIndicator
  • AverageDirectionalIndexIndicator

 


Polar

  • PolarLine
  • PolarArea
  • PolarScatter

 


Radial

  • RadialColumn
  • RadialLine
  • RadialPie

 

 

Scatter

  • Scatter
  • ScatterLine
  • Bubble

 

PieChart

 

 

Trend Lines

  • Linear
  • Quadric
  • Cubic
  • Quatric
  • Quintic
  • Logarithmic
  • Exponential
  • Power Law
  • Simple Average
  • Exponential Average
  • Modified Average
  • Cumulative Average

 

 

Next Steps

I hope you can see we are doing our best to deliver a complete Chart & Grid solution to the market for iPad and iPhone Grid and Chart controls.  Our plan is to deliver a beta of this product in the next 4 to 6 weeks, with an RTM in the summer timeframe.  When we ship the RTM, we’ll post the roadmap for the next year as well, so you’ll be able to see the direction of the product and the new and exciting controls based on iPad UI patterns.  As always, we shape our products based on your feedback, so keep us in the loop with your iOS app development goals.

When we ship, NetAdvantage for iOS will be included with NetAdvantage Ultimate, and it will be sold separately.  If you are a NetAdvantage Ultimate subscriber in the 12.1 release, you will automatically get NetAdvantage for iOS when it ships RTM.

To learn more about NetAdvantage for iOS as we get closer to launch (and to be the first to get the beta), keep an eye on ActiveNick’s Big Bald Blog at http://blogs.infragistics.com/blogs/nick-landry/default.aspx.  Nick is the product manager for all mobile at Infragistics, so let him know what’s on your mind at nlandry@infragistics.com or follow him at @ActiveNick.  You’ll see some killer stuff in HTML5 / jQuery mobile in 12.1, as well as the Windows Phone 12.1 launch.  So rest assured mobile is as important to us as it is to you.

If you have any follow up questions feel free to shoot me an email as well, jasonb@infragistics.com.

Thanks for reading,

Jason