如何在同一原型单元格中添加 XYPieChart 和 PNBarChart
Posted
技术标签:
【中文标题】如何在同一原型单元格中添加 XYPieChart 和 PNBarChart【英文标题】:How to add XYPieChart and PNBarChart in same prototype cell 【发布时间】:2017-05-03 11:06:16 【问题描述】:我的要求很简单。我想在 UITableView 的第一个索引中加载饼图。当我向右滑动时,饼图 (XYPieChart) 应替换为条形图 (PNBarChart)。我在单独的行中分别加载了饼图和条形图。如何在 UITableview 中实现滑动效果?
必须将 UIView 添加到原型单元格中,并且 UIView 的自定义类必须在 Xcode 的 Identity Inspector 中设置为 XYPieChart 和 PNBarChart。
我期望的是像页面控制器一样的效果,但是页面控制器加载了两个视图控制器。对吧?
我可以在原型单元格中添加一个页面控件并将两个 UIView 添加到页面控件中吗? 滑动行时视图会改变吗? 为了清楚起见,我附上了一些截图。
Pie Chart Screenshot
Pie Chart and Bar Chart in two rows
【问题讨论】:
我认为你在问这样的问题,***.com/questions/19185446/… 您可以在表格视图单元格中添加页面控件 @shuvo :但是使用滚动视图只会让我滚动表格行。对?我想要的是滑动效果。就像页面控制器一样。 @BhupatBheda:我可以将 UIViews 而不是视图控制器添加到 tableviewcell 内的页面控件中 做一件事把UIview里面的UIview添加scrollview和pagecontrol 【参考方案1】:像这样试试 但是代码是用 Swift 编写的
首先从 Storyboard 创建 Tableviewcontroller
创建TableView的CustomCell
import UIKit
class CustomCell: UITableViewCell
@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var pageControll: UIPageControl!
override func awakeFromNib()
super.awakeFromNib()
override func setSelected(_ selected: Bool, animated: Bool)
super.setSelected(selected, animated: animated)
现在在 Tableviewcontroller 中添加委托 UIScrollViewDelegate,UITableViewDelegate,UITableViewDataSource
func numberOfSectionsInTableView(tableView: UITableView) -> Int
return 1
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return data.count;
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell:CustomCell = tableView.dequeueReusableCell(withIdentifier: "Cell") as! CustomCell;
let scrollViewWidth:CGFloat = tableView.frame.width
let scrollViewHeight:CGFloat = cell.contentView.frame.height
let imgOne = UIImageView(frame: CGRect(x:0, y:0,width:scrollViewWidth, height:scrollViewHeight))
imgOne.image = UIImage(named: "image1")
imgOne.tag = 1
let imgTwo = UIImageView(frame: CGRect(x:scrollViewWidth, y:0,width:scrollViewWidth, height:scrollViewHeight))
imgTwo.image = UIImage(named: "image2")
imgTwo.tag = 1
cell.scrollView.addSubview(imgOne)
cell.scrollView.addSubview(imgTwo)
cell.scrollView.contentSize = CGSize(width:scrollViewWidth * 2, height:cell.scrollView.frame.height)
cell.scrollView.delegate = self
cell.pageControll.currentPage = 0
pageCtrl = cell.pageControll
return cell;
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView)
if (scrollView.superview?.superview as? CustomCell) != nil
let cell = scrollView.superview?.superview as! CustomCell
let pageWidth:CGFloat = self.view.frame.width
let currentPage:CGFloat = floor((scrollView.contentOffset.x - pageWidth/2)/pageWidth)+1
cell.pageControll.currentPage = Int(currentPage)
【讨论】:
以上是关于如何在同一原型单元格中添加 XYPieChart 和 PNBarChart的主要内容,如果未能解决你的问题,请参考以下文章
在iOS中选择单元格时如何以编程方式更改原型单元格中的标签文本颜色和图像