Ios 未在UITableViewCell Swift中加载图像
这是对TableView中的每个单元格重复的函数。正如您所看到的,im在名为Product的对象中传递一个图像数组(称为imageset)。 productImages是一组产品。在这个对象中,我们有名称、价格和图像集Ios 未在UITableViewCell Swift中加载图像,ios,swift,scrollview,tableviewcell,Ios,Swift,Scrollview,Tableviewcell,这是对TableView中的每个单元格重复的函数。正如您所看到的,im在名为Product的对象中传递一个图像数组(称为imageset)。 productImages是一组产品。在这个对象中,我们有名称、价格和图像集 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.deque
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("productCell", forIndexPath: indexPath) as! ProductHomeCell
cell.productName.text = productImages[indexPath.row].name
cell.productPrice.text = "\(productImages[indexPath.row].price)"
//cell.PageImages contains Array of Images
cell.pageImages = productImages[indexPath.row].imageSet
return cell
}
var pageImages: [UIImage] = []
var pageViews: [UIImageView?] = []
var pageControl : UIPageControl = UIPageControl(frame: CGRectMake(60, 300, 195, 5))
override func awakeFromNib() {
super.awakeFromNib()
scrollView.delegate = self
pageControl = UIPageControl(frame: CGRectMake(230, 14, 107, 37))
//PageImages should be loaded.
let pageCount = pageImages.count
self.pageControl.numberOfPages = pageCount
configurePageControl()
pageControl.enabled = false
// 3
for _ in 0..<pageCount {
pageViews.append(nil)
}
// 4
let pagesScrollViewSize = scrollView.frame.size
scrollView.contentSize = CGSize(width: pagesScrollViewSize.width * CGFloat(pageImages.count),
height: pagesScrollViewSize.height)
loadVisiblePages()
}
func loadPage(page: Int) {
if page < 0 || page >= pageImages.count {
// If it's outside the range of what you have to display, then do nothing
return
}
// 1
if let pageView = pageViews[page] {
// Do nothing. The view is already loaded.
} else {
// 2
var frame = scrollView.bounds
frame.origin.x = frame.size.width * CGFloat(page)
frame.origin.y = 0.0
// 3
let newPageView = UIImageView(image: pageImages[page])
// let newPageView = UIImageView(image: imageC)
newPageView.contentMode = .ScaleAspectFit
newPageView.frame = frame
scrollView.addSubview(newPageView)
// 4
pageViews[page] = newPageView
}
}
func loadVisiblePages() {
// First, determine which page is currently visible
let pageWidth = scrollView.frame.size.width
let page = Int(floor((scrollView.contentOffset.x * 2.0 + pageWidth) / (pageWidth * 2.0)))
// Work out which pages you want to load
let firstPage = page - 1
let lastPage = page + 1
// Purge anything before the first page
for var index = 0; index < firstPage; ++index {
purgePage(index)
}
// Load pages in our range
for index in firstPage...lastPage {
loadPage(index)
}
// Purge anything after the last page
for var index = lastPage+1; index < pageImages.count; ++index {
purgePage(index)
}
}
func scrollViewDidScroll(scrollView: UIScrollView) {
// Load the pages that are now on screen
loadVisiblePages()
}
func purgePage(page: Int) {
if page < 0 || page >= pageImages.count{
// If it's outside the range of what you have to display, then do nothing
return
}
// Remove a page from the scroll view and reset the container array
if let pageView = pageViews[page] {
pageView.removeFromSuperview()
pageViews[page] = nil
}
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
func configurePageControl() {
self.pageControl.currentPage = 0
self.pageControl.tintColor = UIColor.blackColor()
self.pageControl.pageIndicatorTintColor = UIColor.lightGrayColor()
self.pageControl.currentPageIndicatorTintColor = UIColor.blackColor()
self.addSubview(pageControl)
}
func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
let pageNumber = round(scrollView.contentOffset.x / scrollView.frame.size.width)
pageControl.currentPage = Int(pageNumber)
}
var pageImages:[UIImage]=[]
var页面浏览量:[UIImageView?]=[]
var pageControl:UIPageControl=UIPageControl(帧:CGRectMake(603001955,5))
重写func awakeFromNib(){
super.awakeFromNib()
scrollView.delegate=self
pageControl=UIPageControl(帧:CGRectMake(230、14、107、37))
//应加载页面图像。
让pageCount=pageImages.count
self.pageControl.numberOfPages=页面计数
configurePageControl()
pageControl.enabled=false
// 3
对于0中的u0..=pageImages.count{
//如果超出了必须显示的范围,则什么也不做
返回
}
// 1
如果let pageView=pageViews[page]{
//不执行任何操作。视图已加载。
}否则{
// 2
var frame=scrollView.bounds
frame.origin.x=frame.size.width*CGFloat(第页)
frame.origin.y=0.0
// 3
让newPageView=UIImageView(图像:pageImages[页面])
//让newPageView=UIImageView(图像:imageC)
newPageView.contentMode=.ScaleSpectFit
newPageView.frame=frame
scrollView.addSubview(newPageView)
// 4
页面浏览量[页面]=新建页面浏览量
}
}
func loadVisiblePages(){
//首先,确定当前可见的页面
让pageWidth=scrollView.frame.size.width
让page=Int(floor((scrollView.contentOffset.x*2.0+pageWidth)/(pageWidth*2.0)))
//确定要加载的页面
让firstPage=page-1
让lastPage=page+1
//清除第一页之前的任何内容
对于var index=0;index=pageImages.count{
//如果超出了必须显示的范围,则什么也不做
返回
}
//从滚动视图中删除页面并重置容器阵列
如果let pageView=pageViews[page]{
pageView.removeFromSuperview()
页面浏览量[页面]=零
}
}
覆盖功能设置选定(选定:布尔,动画:布尔){
super.setSelected(选定,动画:动画)
//为所选状态配置视图
}
func configurePageControl(){
self.pageControl.currentPage=0
self.pageControl.tintColor=UIColor.blackColor()
self.pageControl.pageIndicatorTintColor=UIColor.lightGrayColor()
self.pageControl.currentPageIndicatorTintColor=UIColor.blackColor()
self.addSubview(页面控制)
}
func ScrollViewDiEndDecelling(scrollView:UIScrollView){
让pageNumber=round(scrollView.contentOffset.x/scrollView.frame.size.width)
pageControl.currentPage=Int(页码)
}
awakeFromNib
在通过dequeue…
返回单元格之前执行,因此尝试在那里设置页面是行不通的。我见过的两种方法都是使用一种方法来显式设置单元格:
func setupCell(productName:String, productPrice:Double, images:[UIImage]) {
// Do most of what you have in awakeFromNib here
}
或者在属性的didSet中执行此操作:
var pageImages : [UIImage] = [] {
didSet {
// Set up your page controller here.
}
}
欢迎来到SO,没有人会阅读所有这些代码。你能把你的代码编辑到相关部分吗?谢谢!我试着用didSet,效果很好