ChartsDemo-iOS/Objective-C/DemoListViewController.m (190 lines of code) (raw):
//
// DemoListViewController.m
// ChartsDemo
//
// Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda
// A port of MPAndroidChart for iOS
// Licensed under Apache License 2.0
//
// https://github.com/danielgindi/Charts
//
#import "DemoListViewController.h"
#import "LineChart1ViewController.h"
#import "LineChart2ViewController.h"
#import "BarChartViewController.h"
#import "HorizontalBarChartViewController.h"
#import "CombinedChartViewController.h"
#import "PieChartViewController.h"
#import "PiePolylineChartViewController.h"
#import "ScatterChartViewController.h"
#import "StackedBarChartViewController.h"
#import "NegativeStackedBarChartViewController.h"
#import "AnotherBarChartViewController.h"
#import "MultipleLinesChartViewController.h"
#import "MultipleBarChartViewController.h"
#import "CandleStickChartViewController.h"
#import "CubicLineChartViewController.h"
#import "RadarChartViewController.h"
#import "ColoredLineChartViewController.h"
#import "SinusBarChartViewController.h"
#import "PositiveNegativeBarChartViewController.h"
#import "BubbleChartViewController.h"
#import "LineChartTimeViewController.h"
#import "LineChartFilledViewController.h"
#import "HalfPieChartViewController.h"
@interface DemoListViewController () <UITableViewDataSource, UITableViewDelegate>
@property (nonatomic, strong) IBOutlet UITableView *tableView;
@property (nonatomic, strong) NSArray *itemDefs;
@end
@implementation DemoListViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.title = @"Charts Demonstration";
self.itemDefs = @[
@{
@"title": @"Line Chart",
@"subtitle": @"A simple demonstration of the linechart.",
@"class": LineChart1ViewController.class
},
@{
@"title": @"Line Chart (Dual YAxis)",
@"subtitle": @"Demonstration of the linechart with dual y-axis.",
@"class": LineChart2ViewController.class
},
@{
@"title": @"Bar Chart",
@"subtitle": @"A simple demonstration of the bar chart.",
@"class": BarChartViewController.class
},
@{
@"title": @"Horizontal Bar Chart",
@"subtitle": @"A simple demonstration of the horizontal bar chart.",
@"class": HorizontalBarChartViewController.class
},
@{
@"title": @"Combined Chart",
@"subtitle": @"Demonstrates how to create a combined chart (bar and line in this case).",
@"class": CombinedChartViewController.class
},
@{
@"title": @"Pie Chart",
@"subtitle": @"A simple demonstration of the pie chart.",
@"class": PieChartViewController.class
},
@{
@"title": @"Pie Chart with value lines",
@"subtitle": @"A simple demonstration of the pie chart with polyline notes.",
@"class": PiePolylineChartViewController.class
},
@{
@"title": @"Scatter Chart",
@"subtitle": @"A simple demonstration of the scatter chart.",
@"class": ScatterChartViewController.class
},
@{
@"title": @"Bubble Chart",
@"subtitle": @"A simple demonstration of the bubble chart.",
@"class": BubbleChartViewController.class
},
@{
@"title": @"Stacked Bar Chart",
@"subtitle": @"A simple demonstration of a bar chart with stacked bars.",
@"class": StackedBarChartViewController.class
},
@{
@"title": @"Stacked Bar Chart Negative",
@"subtitle": @"A simple demonstration of stacked bars with negative and positive values.",
@"class": NegativeStackedBarChartViewController.class
},
@{
@"title": @"Another Bar Chart",
@"subtitle": @"Implementation of a BarChart that only shows values at the bottom.",
@"class": AnotherBarChartViewController.class
},
@{
@"title": @"Multiple Lines Chart",
@"subtitle": @"A line chart with multiple DataSet objects. One color per DataSet.",
@"class": MultipleLinesChartViewController.class
},
@{
@"title": @"Multiple Bars Chart",
@"subtitle": @"A bar chart with multiple DataSet objects. One multiple colors per DataSet.",
@"class": MultipleBarChartViewController.class
},
@{
@"title": @"Candle Stick Chart",
@"subtitle": @"Demonstrates usage of the CandleStickChart.",
@"class": CandleStickChartViewController.class
},
@{
@"title": @"Cubic Line Chart",
@"subtitle": @"Demonstrates cubic lines in a LineChart.",
@"class": CubicLineChartViewController.class
},
@{
@"title": @"Radar Chart",
@"subtitle": @"Demonstrates the use of a spider-web like (net) chart.",
@"class": RadarChartViewController.class
},
@{
@"title": @"Colored Line Chart",
@"subtitle": @"Shows a LineChart with different background and line color.",
@"class": ColoredLineChartViewController.class
},
@{
@"title": @"Sinus Bar Chart",
@"subtitle": @"A Bar Chart plotting the sinus function with 8.000 values.",
@"class": SinusBarChartViewController.class
},
@{
@"title": @"BarChart positive / negative",
@"subtitle": @"This demonstrates how to create a BarChart with positive and negative values in different colors.",
@"class": PositiveNegativeBarChartViewController.class
},
@{
@"title": @"Time Line Chart",
@"subtitle": @"Simple demonstration of a time-chart. This chart draws one line entry per hour originating from the current time in milliseconds.",
@"class": LineChartTimeViewController.class
},
@{
@"title": @"Filled Line Chart",
@"subtitle": @"This demonstrates how to fill an area between two LineDataSets.",
@"class": LineChartFilledViewController.class
},
@{
@"title": @"Half Pie Chart",
@"subtitle": @"This demonstrates how to create a 180 degree PieChart.",
@"class": HalfPieChartViewController.class
}
];
//FIXME: Add TimeLineChart
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark - UITableViewDataSource, UITableViewDelegate
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.itemDefs.count;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 70.f;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSDictionary *def = self.itemDefs[indexPath.row];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
if (!cell)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"Cell"];
}
cell.textLabel.text = def[@"title"];
cell.detailTextLabel.text = def[@"subtitle"];
cell.detailTextLabel.numberOfLines = 0;
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSDictionary *def = self.itemDefs[indexPath.row];
Class vcClass = def[@"class"];
UIViewController *vc = [[vcClass alloc] init];
[self.navigationController pushViewController:vc animated:YES];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
@end