1

私は iOS Charts ( https://github.com/danielgindi/ios-charts ) を使用していますが、通常のビュー コントローラーでうまく機能します。ただし、セルによってデータ ソースが異なるテーブルビュー セルにこれらのグラフを実装したいと考えています。また、このチャートを表示しているビューへのアウトレットは、セル サブクラスにあります。セル サブクラスのビューに表示するために、このコード (非反復ビュー コントローラーで動作する場所) を実装するにはどうすればよいですか? 前もって感謝します!!

class ChartViewController: UIViewController {

   @IBOutlet weak var lineChartView: LineChartView!

      override func viewDidLoad() {
         super.viewDidLoad()

         let candidates = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
         let ratings = [33.0, 20.0, 13.0, 9.0, 8.0, 6.0]

         setChart(candidates, values: ratings)
      }

      func setChart(dataPoints: [String], values: [Double]) {

         var dataEntries: [ChartDataEntry] = []

         for i in 0..<dataPoints.count {

            let dataEntry = ChartDataEntry(value: values[i], xIndex: i)

            dataEntries.append(dataEntry)
         }

         let lineChartDataSet = LineChartDataSet(yVals: dataEntries, label: "Rating")
         let lineChartData = LineChartData(xVals: dataPoints, dataSet: lineChartDataSet)
         lineChartView.data = lineChartData
         lineChartView.animate(xAxisDuration: 2.0)
      } 
}
4

2 に答える 2

3

ビュー コントローラーからプロトタイプ テーブル ビュー セルにすべてをコピーすることにより、ストーリーボードで LineChartView を使用できるように、テーブル ビュー セル サブクラスのセル ビューを設定できます。

ストーリーボードの Identity Inspector でカスタム セルのクラスを設定することを忘れないでください。

チャートのパラメータを保持するプロパティをいくつか追加します。これらは、 でセルを表示するときに設定できますcellForRowAtIndexPath:

例えば:

class MyTableViewCell: UITableViewCell {
    @IBOutlet weak var lineChartView: LineChartView!
    var candidates: Array<String>?
    var ratings: Array<Float>?

セルを表示すると、プロパティを設定できます。

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {        
    let cell = tableView.dequeueReusableCellWithIdentifier(“chartCell”, forIndexPath: indexPath)
    candidates = someCandidatesArrayForIndexPath(indexPath)
    ratings = someRatingsArrayForIndexPath(indexPath)
    cell.setChart()
    return cell
}

したがって、セルを返すと、インデックス パスに基づいて異なるビューを表示するようにプロパティが設定されます。この例で使用した関数 someCandidatesArrayForIndexPath( ) および someRatingsArrayForIndexPath( ) は、表示に必要な値を取得します。これらの関数を作成する必要があります。

于 2015-11-03T01:27:57.050 に答える