0
私は、スクロールビューでページコントロールでスクロールできる3つのチャートを用意していますが、これを設定する最良の方法はなんですか?私が見たチュートリアルのほとんどは、プログラムによってビューをセットアップしましたが、チャートを使用するためにはすでにUIViews
をストーリーボードに作成しなければならなかったので、scrollView
を設定する最良の方法は、チャートがそれぞれ別のページ?コードのPageControlをStoryboardで使用するScrollView
関連する行は以下の通りです。グラフを含むUIViewを別の場所にドラッグする必要がありますか?それとも、ストーリーボードではできないのですか?
import UIKit
import Charts
class ChartsViewController: UIViewController {
// MARK: Types
enum TimePeriod: Int {
case day = 0
case week = 1
case month = 2
case year = 3
}
// MARK: Properties
var period: TimePeriod = .day {
didSet {
print(self.period)
}
}
@IBOutlet weak var pageControl: UIPageControl!
@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var pieChart: PieChartView!
@IBOutlet weak var segmentedControl: UISegmentedControl!
@IBOutlet weak var barChart: BarChartView!
@IBOutlet weak var lineChart: LineChartView!
func lineChartUpdate() {
var lineChartEntry = [ChartDataEntry]()
for i in 0 ..< 15 {
let value = ChartDataEntry(x: Double(i), y: Double(i))
lineChartEntry.append(value)
}
let line1 = LineChartDataSet(values: lineChartEntry, label: "Category 1")
let data = LineChartData(dataSets: [line1])
lineChart.data = data
lineChart.chartDescription?.text = "Line Chart"
lineChart.notifyDataSetChanged()
}
func configurePageControl() {
self.pageControl.numberOfPages = 3
self.pageControl.currentPage = 0
}
@IBAction func renderCharts(_ sender: UISlider) {
pieChartUpdate()
barChartUpdate()
}
@IBAction func segmentedControlSelectedIndexDidChange(_ sender: UISegmentedControl) {
self.period = TimePeriod(rawValue: sender.selectedSegmentIndex)!
}
// MARK: UIViewController
override func viewDidLoad() {
super.viewDidLoad()
configurePageControl()
pieChartUpdate()
barChartUpdate()
lineChartUpdate()
scrollView.addSubview(pieChart)
scrollView.addSubview(barChart)
scrollView.addSubview(lineChart)
}
@IBAction func pageChange(_ sender: UIPageControl) {
}
}