【发布时间】:2019-11-10 14:47:49
【问题描述】:
我的自定义表格视图单元格中没有显示饼图有问题。 表格视图单元格是通过情节提要添加的,每个单元格包含一个小图标图像、两个标签和一个 UIView,我在视图检查器中将其设置为 PieChartView。
两个标签中的小图标图像和文本显示正常,没有问题。但是,对于饼图,我没有收到任何错误消息,只是没有显示任何图表。表格显示出来,在标签中填充了正确的文本,但除了饼图的中间孔之外,饼图视图是空的。当我单击其中一个时,会显示饼图视图 - 不完全正确(仅显示两个饼图中的一个,另一部分丢失)。
因此,触摸事件使切片可见,但我希望在为行函数运行单元格时饼图对所有单元格可见。
我已经为 tableviewcontroller 和 tableviewcell 添加了代码。如果有人能指出我的错误,那就太好了。我已经研究并尝试了很多,其中包括以下堆栈溢出资源: Charts not plotting in tableViewCell iosChart not displaying LineChartView points in UITableViewCell Adding a SubView to UITableViewCell doesn't get displayed How to implement iOS Chart in a tableview cell?
截图显示了我点击一些不可见的饼图后的情况。它们变得可见,当我向下滚动表格时,随机单元格中的更多(不是全部)饼图可见,有些则不可见。
tableviewcontroller 的代码:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "easyAndDiffAllWordsCell", for: indexPath) as! BVBResultsDiffAndEasyAllWordsGraphTableViewCell
let easyVoc = parsedInEasyVocStructures[indexPath.row]
//get the current voc for the writings
let currentVoc = BVBVocabularyManager.getVoc()
cell.label1.text = currentVoc.kanji
cell.label2.text = currentVoc.kanji2
let image = UIImage(named: "plus")
cell.plusMinusImage.image = image
//set the percentages
cell.percentageSolved = arrayOfSuccessPercentagesForPieChart
cell.percentageNotSolved = arrayOfNegativeSuccessPercentagesForPieChart
cell.setChart(forIndexNo:indexPath.row, dataPoints: months, valuesSolved: arrayOfSuccessPercentagesForPieChart, valuedNonSolved: arrayOfNegativeSuccessPercentagesForPieChart)
cell.setNeedsDisplay()
cell.pieChartView.clipsToBounds = true
cell.pieChartView.layer.masksToBounds = true
cell.pieChartView.contentMode = .scaleAspectFit
return cell
}
对于tableViewCell:
class BVBResultsDiffAndEasyAllWordsGraphTableViewCell: UITableViewCell {
@IBOutlet weak var kanjiL: UILabel!
@IBOutlet weak var translationL: UILabel!
@IBOutlet weak var pieChartView: PieChartView!
@IBOutlet weak var plusMinusImage: UIImageView!
var testconditions: Array<String>?
var percentageSolved: Array<Int>?
var percentageNotSolved: Array<Int>?
var solvedPercentageDataEntry = PieChartDataEntry(value: 0)
var nonSolvedPercentageDataEntry = PieChartDataEntry(value: 0)
var percentageSolvedNonSolvedDataEntries = [PieChartDataEntry]()
override func awakeFromNib() {
super.awakeFromNib()
solvedPercentageDataEntry.label = NSLocalizedString("solved", comment: "piechart label for the solved area")
pieChartView.chartDescription?.text = ""
pieChartView.legend.enabled = false
pieChartView.setExtraOffsets(left: 2, top: 0, right: 2, bottom: 0)
pieChartView.holeRadiusPercent = 2.8
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
//not used
}
func setChart(forIndexNo: Int, dataPoints: [String], valuesSolved: [Int], valuedNonSolved: [Int]){
var dataEntries: [PieChartDataEntry] = []
solvedPercentageDataEntry = PieChartDataEntry(value: Double(valuesSolved[forIndexNo]), label: "")
nonSolvedPercentageDataEntry = PieChartDataEntry(value:Double(valuedNonSolved[forIndexNo]), label: "")
dataEntries = [solvedPercentageDataEntry, nonSolvedPercentageDataEntry]
percentageSolvedNonSolvedDataEntries = [solvedPercentageDataEntry, nonSolvedPercentageDataEntry]
let pieChartDataSet = PieChartDataSet(entries: percentageSolvedNonSolvedDataEntries, label: nil)
pieChartDataSet.drawValuesEnabled = false
let pieChartData = PieChartData(dataSet: pieChartDataSet)
let colors = [UIColor.themeColor(), UIColor.red]
pieChartDataSet.colors = colors as! [NSUIColor]
pieChartView.data = pieChartData
pieChartView.notifyDataSetChanged()
}
}
【问题讨论】:
标签: ios swift uitableview charts