我的应用程序的要求是我需要在视图控制器的集合视图中显示不同的图表,如饼图,折线图,条形图等。 我计划使用最常用的库来创建图表https://github.com/danielgindi/Charts。要在页面上单独实现每种类型的图表,我们必须创建图表类的UIView。例如要实现饼图,我们必须创建类PieChartView的视图。 我的问题是,如果我们想在单个集合视图中使用不同的图表,我们如何实现它?由于我是快速开发代码样本的新手,所以真的会有所帮助。
提前致谢。
答案 0 :(得分:0)
让我们说显示集合视图的视图控制器被命名为StatsVC,然后你需要在界面构建器中添加一个集合View,点击集合ViewCell并给它一个重用标识符(例如chartCell)然后在代码中:
class StatcVC:UIViewController, UICollectionViewDelegate, UICollectionViewDataSource {
//create your charts here and put them in an array to be easier later on
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int -> Int {
return numberOfCellsYouNeed
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath) -> UICollectionVIewCell{
if let cell = collectionView.dequeueReusableCell(withIdentifier:"chartCell", for: indexPath) {
cell.addSubView(chartViews[indexPath.row])
return cell
}else{
return UICollectionViewCell()
}}
这是执行此操作的基本方法,但它可能看起来不太漂亮,下一步是创建自定义collectionViewCell类,在InterfaceBuilder中可以设计它,然后在ChartCell自定义类(UICollectionVIewCell)中的连接插座中进行设计在StatsVC中使用此自定义单元格。自定义单元格的优点是您可以在顶部/底部有一个标签来描述图表或您需要的任何其他UI元素。如果将所有图表视图保存在数组中,则可以使用上述方法将它们轻松添加到collectionView中。
<强>更新强> 要以编程方式创建视图,您可以这样做:
let barChartView1 = BarChartView()
let barChartView2 = BarChartView()
barChartView1.data = ...// you do what you need to do here, I'm not familiar with your data/code...
var chartViews = [barChartView1, barChartView2]
最后,如上所示,您可以使用indexPath.row作为数组索引来提取下一个chartView并将其放在collectionViewCell中。使用集合nad表视图并不是一项简单的任务,因此我建议您在Apple库中阅读一夜。 Tjios文章详细解释了它。 https://developer.apple.com/library/content/documentation/WindowsViews/Conceptual/CollectionViewPGforIOS/CollectionViewBasics/CollectionViewBasics.html