ChartsDemo-iOS/Swift/DemoListViewController.swift (109 lines of code) (raw):

// // DemoListViewController.swift // ChartsDemo-iOS // // Created by Jacob Christie on 2017-07-09. // Copyright © 2017 jc. All rights reserved. // #if canImport(UIKit) import UIKit #endif private struct ItemDef { let title: String let subtitle: String let `class`: AnyClass } class DemoListViewController: UIViewController { @IBOutlet var tableView: UITableView! private var itemDefs = [ItemDef(title: "Line Chart", subtitle: "A simple demonstration of the linechart.", class: LineChart1ViewController.self), ItemDef(title: "Line Chart (Dual YAxis)", subtitle: "Demonstration of the linechart with dual y-axis.", class: LineChart2ViewController.self), ItemDef(title: "Bar Chart", subtitle: "A simple demonstration of the bar chart.", class: BarChartViewController.self), ItemDef(title: "Horizontal Bar Chart", subtitle: "A simple demonstration of the horizontal bar chart.", class: HorizontalBarChartViewController.self), ItemDef(title: "Combined Chart", subtitle: "Demonstrates how to create a combined chart (bar and line in this case).", class: CombinedChartViewController.self), ItemDef(title: "Pie Chart", subtitle: "A simple demonstration of the pie chart.", class: PieChartViewController.self), ItemDef(title: "Pie Chart with value lines", subtitle: "A simple demonstration of the pie chart with polyline notes.", class: PiePolylineChartViewController.self), ItemDef(title: "Scatter Chart", subtitle: "A simple demonstration of the scatter chart.", class: ScatterChartViewController.self), ItemDef(title: "Bubble Chart", subtitle: "A simple demonstration of the bubble chart.", class: BubbleChartViewController.self), ItemDef(title: "Stacked Bar Chart", subtitle: "A simple demonstration of a bar chart with stacked bars.", class: StackedBarChartViewController.self), ItemDef(title: "Stacked Bar Chart Negative", subtitle: "A simple demonstration of stacked bars with negative and positive values.", class: NegativeStackedBarChartViewController.self), ItemDef(title: "Another Bar Chart", subtitle: "Implementation of a BarChart that only shows values at the bottom.", class: AnotherBarChartViewController.self), ItemDef(title: "Multiple Lines Chart", subtitle: "A line chart with multiple DataSet objects. One color per DataSet.", class: MultipleLinesChartViewController.self), ItemDef(title: "Multiple Bars Chart", subtitle: "A bar chart with multiple DataSet objects. One multiple colors per DataSet.", class: MultipleBarChartViewController.self), ItemDef(title: "Candle Stick Chart", subtitle: "Demonstrates usage of the CandleStickChart.", class: CandleStickChartViewController.self), ItemDef(title: "Cubic Line Chart", subtitle: "Demonstrates cubic lines in a LineChart.", class: CubicLineChartViewController.self), ItemDef(title: "Radar Chart", subtitle: "Demonstrates the use of a spider-web like (net) chart.", class: RadarChartViewController.self), ItemDef(title: "Colored Line Chart", subtitle: "Shows a LineChart with different background and line color.", class: ColoredLineChartViewController.self), ItemDef(title: "Sinus Bar Chart", subtitle: "A Bar Chart plotting the sinus function with 8.000 values.", class: SinusBarChartViewController.self), ItemDef(title: "BarChart positive / negative", subtitle: "This demonstrates how to create a BarChart with positive and negative values in different colors.", class: PositiveNegativeBarChartViewController.self), ItemDef(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.self), ItemDef(title: "Filled Line Chart", subtitle: "This demonstrates how to fill an area between two LineDataSets.", class: LineChartFilledViewController.self), ItemDef(title: "Half Pie Chart", subtitle: "This demonstrates how to create a 180 degree PieChart.", class: HalfPieChartViewController.self) ] override func viewDidLoad() { super.viewDidLoad() self.title = "Charts Demonstration" self.tableView.rowHeight = 70 //FIXME: Add TimeLineChart } } extension DemoListViewController: UITableViewDelegate, UITableViewDataSource { func numberOfSections(in tableView: UITableView) -> Int { return 1 } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return self.itemDefs.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let def = self.itemDefs[indexPath.row] let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") ?? UITableViewCell(style: .subtitle, reuseIdentifier: "Cell") cell.textLabel?.text = def.title cell.detailTextLabel?.text = def.subtitle cell.detailTextLabel?.numberOfLines = 0 return cell } func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let def = self.itemDefs[indexPath.row] let vcClass = def.class as! UIViewController.Type let vc = vcClass.init() self.navigationController?.pushViewController(vc, animated: true) tableView.deselectRow(at: indexPath, animated: true) } }