在uicollectioncontroller和viewcontroller之间传递单元索引

时间:2016-10-06 09:09:11

标签: swift uicollectionview

我有一个主视图控制器,它是UICollectionViewController,我声明:

var cellIndex: Int = 0

然后我在didSelectItemAtIndexPath方法

中为这个变量赋值
cellIndex = indexPath.item+1

然后我通过prepareForSegue方法将其发送到第二个视图控制器

destination.cellIndexToUse = self.cellIndex

在我的第二个视图控制器(即目标)中我声明

var cellIndexToUse: Int = 0

然后在viewDidLoad中我调用一个函数,为一个空数组分配正确的图像数组的值,这取决于被挖掘的单元格,这个函数是......

func assignArrays () { 
if cellIndexToUse == 0 {objectsImages = imagesA}
if cellIndexToUse == 1
{objectImages = imagesB}
if cellIndexToUse == 2 
{objectImages = imagesC}
if cellIndexToUse == 3
{objectImages = imagesD}

我的问题是: 当我点击单元格时,所有图像都显示正确,但如果我第二次单击所有单元格,第一个单元格显示没有图像,其余所有图像都完全正常。

2 个答案:

答案 0 :(得分:0)

也许你过早地调用这个函数。 viewDidLoad在分配cellIndexToUse之前发生。{/ p>

尝试在viewWillAppear设置图片。

答案 1 :(得分:0)

我已经解决了我的问题,它的工作原理非常好。如果有人需要,我会在这里写一个答案:

我根本不需要didSelectItemAtIndexPath,所以我删除了它,但我更正了prepareForSegue方法:

if (segue.identified == "mySegueIdentifier") {
  let destination = segue.destinationViewController as! MyNextViewController
  destination.cellIndexToUse = (myCollectionView.indexPathsForSelectedItems()?.first?.item)!}