2017-05-03 14 views
0

我的要求很简单。我想在UITableView的第一个索引中加载饼图。当我向右滑动时,应将饼图(XYPieChart)替换为条形图(PNBarChart)。我已分别在不同的行中加载饼图和条形图。我如何在UITableview中实现这种滑动效果?如何在同一个原型单元中添加XYPieChart和PNBarChart

必须将UIView添加到原型单元格中,并且UIView的自定义类必须在Xcode中的Identity Inspector中设置为XYPieChart和PNBarChart。

我期望的效果是页面控制器,但页面控制器加载两个视图控制器。对?

我可以在原型单元格内添加页面控件并将两个UIViews添加到页面控件中吗? 当我滑动行时,视图是否会改变? 为了清晰起见,我附上了一些截图。

Pie Chart Screenshot

Pie Chart and Bar Chart in two rows

+0

我觉得你问这样的事情,http://stackoverflow.com/questions/19185446/horizo​​ntal-uiscrollview-inside -custom-uitableviewcell-using-ib-storyboard-no – shuvo

+0

您可以在表格视图单元格中添加页面控件 –

+0

@shuvo:但使用滚动视图将只允许我滚动表格行。对? 我想要的是一个滑动效果。就像页面控制器一样。 –

回答

0

尝试这样的代码,但在斯威夫特

首先创建Tableviewcontroller从故事板

enter image description here

的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) 
    } 

} 
相关问题