UIScrollView在可重用单元格中的位置,影响其他单元格中的UIScrollView位置

时间:2015-02-17 23:52:01

标签: ios uitableview swift uiscrollview

我正在使用Swift构建一个iOS应用程序,用户可以在其中上下滚动图像供稿(如instagram),也可以在单元格上向左或向右滚动以查看更多图像。请参阅this album(无法上传图片),并参阅F1了解用户界面的布局方式。

我的问题是当我滚动到图像1C时,第三个单元格也滚动到3C。所以当我向下滚动到第三个单元格时,它已经在3C。见F2。

此外,如果我将第3个单元格滚动到3B,它还会将第一个单元格重新定位到1B。见F3。

我想帮助理解正在发生的事情......

我为单元格创建了一个自定义类,其中包含加载图像的功能。 (我还初始化了imageView框架,scrollView框架和内容大小,以及我未在下面的代码中包含的其他属性。)

class CustomCell: UITableViewCell {

var imageView1: UIImageView = UIImageView()

var imageView2: UIImageView = UIImageView()

var imageView3: UIImageView = UIImageView()

func loadImages(#image1: String, image2: String, image3: String){

    imageView1.image = UIImage(named: image1)

    imageView2.image = UIImage(named: image2)

    imageView3.image = UIImage(named: image3)

}}

并在我的View Controller中 - cellForRowAtIndexPath

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    var cell:CustomCell = self.tableView.dequeueReusableCellWithIdentifier("CustomCell") as CustomCell

    var (firstImage, secondImage, thirdImage) = images[indexPath.row]

    cell.loadImages(image1: firstImage, image2: secondImage, image3: thirdImage)

    return cell
}

仅供参考:只有在视图是根视图控制器时才会出现这种情况。当视图显示时,它工作正常。 ???

谢谢!

2 个答案:

答案 0 :(得分:0)

可重复使用意味着:为了加快速度,细胞会被重复利用。但是当您更改视图属性时,在使用新值填充单元格时会出现这些属性。在cellF或RiWAtIndexPath中将值设置回人口,或者在cellWillDisplay中将值设置为 - clean IMHO。

答案 1 :(得分:0)

UITableView 出列可重复使用的单元格。这意味着您单元格中的水平滚动视图将与他出列的单元格具有相同的内容偏移量。因此,如果您在单元格1中滚动到让我们说contentOffset.x = 100.0而不是在您的tableview中向下滚动,则可能会发生下列单元格之一的滚动视图子视图具有相同的contentOffset。 只需在contentOffset.y = 0中设置cellForRowAtIndexPath即可。 或更好:保存单元格选定的imageIndex并设置适当的contentOffset。