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.count3都是整数,所以划分它们会给你一个整数。 在计算已经完成之后,尝试将该整数转换为双精度为时已经太晚了,您必须将它们转换为双精度,并在双精度上进行除法运算。

将其更改为return roundUp(Double(imageArray.count) / 3.0)

如果我是你,我会完全避免这个讨厌的roundUp函数。 您不必使用十进制数字来进行简单的计算。

以下将做的伎俩:

 return (imageArray.count + 2) / 3 

2是除数3减1)。