numberOfRowsInSection / 3 – 只返回15个图像,而不是16或17,因为它们不能被3整除
我正在查询图像parsing显示在我的tableViewCell里面有3个imageView。 所以,如果我有15个图像,我会得到5个TableView行,所有的图像将正确显示。
但是,如果我有16或17图像,这不是3的倍数的图像不显示,这是非常合乎逻辑的,因为我已经添加了我的查询计数除以3.但我已经推荐一个方法由另一个非常有用的用户在这里@Wottle应该解决这个问题,但它似乎并没有正常工作! 下面是我的代码,希望有人能帮助我!
我很感激你的时间。
这个function应该让我可以看到图像,即使他们是3的倍数。
func roundUp(value: Double) -> Int { if value == Double(Int(value)) { return Int(value) } else if value < 0 { return Int(value) } else { return Int(value) + 1 } } func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return roundUp( Double(imageArray.count / 3) ) }
这里是我的cellForRowAtIndexPath:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { var counter = (indexPath.row * 3) let cell = tableView.dequeueReusableCellWithIdentifier("cell") as! ProfileTableViewCell for imageView in cell.threeImages { imageView.image = UIImage(named: "ImagePlaceHolder") if counter < imageArray.count { let finalImage = imageArray[counter++]["image"] finalImage!.getDataInBackgroundWithBlock { (imageData: NSData?, error: NSError?) -> Void in if error == nil { if let imageData = imageData { imageView.image = UIImage(data:imageData) }}}}
最好的祝福。
imageArray.count
和3
都是整数,所以划分它们会给你一个整数。 在计算已经完成之后,尝试将该整数转换为双精度为时已经太晚了,您必须将它们转换为双精度,并在双精度上进行除法运算。
将其更改为return roundUp(Double(imageArray.count) / 3.0)
如果我是你,我会完全避免这个讨厌的roundUp
函数。 您不必使用十进制数字来进行简单的计算。
以下将做的伎俩:
return (imageArray.count + 2) / 3
( 2
是除数3
减1)。