为什么viewDidLoad在didSelectItemAtIndexPath之前运行?

时间:2015-04-03 02:19:56

标签: xcode swift uicollectionview

我正在使用UICollectionViewDataSource&我的个人ViewController子类文件中的UICollectionViewDelegate。我现在可以单击CollectionView中的单元格并导航到我想要的子ViewController,但目标的viewDidLoad方法总是在didSelectItemAtIndexPath之前运行,所以我无法获得视图出现之前所选单元格的信息,例如获取所选单元格的标签名称。

以下是我现在所做的代码,第2行总是在第1行之前,但我需要先获得第1行,任何想法?

在UICollectionView的ViewController中,包含数据源和委托:

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
    println("1")  //line 1
}

在目标的ViewController中:

override func viewDidLoad() {
    super.viewDidLoad()

    println("2")  //line 2
}

P.S:push segue正在使用从主目标到目标。

2 个答案:

答案 0 :(得分:1)

使用didHighlightItemAtIndexPath代替didSelectItemAtIndexPath解决了我的问题。

答案 1 :(得分:0)

使用prepareForSender:segue:代替collectionView:didSelectItemAtIndexPath:sender是被挖掘的单元格。如果您需要其索引路径,可以使用indexPathForCell:从集合视图中获取它(将sender作为参数传递)。