Чтобы отобразить несколько диаграмм, таких как гистограмма, круговая диаграмма, линейная диаграмма, в одном представлении коллекции в контроллере представления

Требование моего приложения таково, что мне нужно показывать разные диаграммы, такие как круговая диаграмма, линейная диаграмма, гистограмма и т. д., в представлении коллекции в контроллере представления. Я планирую использовать наиболее часто используемую библиотеку для создания диаграмм https://github.com/danielgindi/Charts. Чтобы реализовать каждый тип диаграммы отдельно на странице, мы должны создать UIView класса диаграммы. Например, чтобы реализовать круговую диаграмму, мы должны создать представление класса PieChartView. Мой вопрос: если нам нужны разные диаграммы в одном представлении коллекции, как мы можем это реализовать? Поскольку я новичок в быстрой разработке, образцы кода действительно помогут.

Заранее спасибо.


person Community    schedule 22.11.2017    source источник


Ответы (1)


Допустим, контроллер представления, который отображает представление коллекции, называется StatsVC, тогда вам нужно добавить к нему представление коллекции в построителе интерфейса, щелкнуть collectionViewCell и присвоить ему идентификатор повторного использования (например, 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. Преимущество пользовательской ячейки заключается в том, что у вас может быть метка вверху/внизу, которая описывает диаграмму или любой другой элемент пользовательского интерфейса, который вам нужен. Если вы храните все свои представления диаграмм в массиве, вы можете очень легко добавить их в 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. Работа с коллекциями и табличными представлениями — не совсем тривиальная задача, поэтому я рекомендую спокойной ночи почитать в библиотеке Apple. Статья Tjios объясняет это подробно. https://developer.apple.com/library/content/documentation/WindowsViews/Conceptual/CollectionViewPGforIOS/CollectionViewBasics/CollectionViewBasics.html

person Andras M.    schedule 22.11.2017
comment
Спасибо за помощь. Но github.com/danielgindi/Charts . описывает только добавление класса представлений в конструкторе интерфейса. Я не знаю, как добавить его программно и добавить в массив. Не могли бы вы поделиться со мной образцом кода для этого. Заранее спасибо. - person ; 22.11.2017
comment
@user8986838 user8986838 ты нашел какое-нибудь решение? - person jayant rawat; 17.02.2020