2015-04-03 90 views
1

我在我的個人ViewController子類文件中使用UICollectionViewDataSource & UICollectionViewDelegate。我現在可以點擊的CollectionView細胞並導航到孩子的ViewController我想要的,但目標的viewDidLoad方法總是didSelectItemAtIndexPath之前運行,所以我不能讓選定單元格的信息視圖出來之前,例如以獲得所選單元格的標籤名稱。爲什麼viewDidLoad在didSelectItemAtIndexPath之前運行?

下面是我現在所做的代碼,第2行總是出現在第1行之前,但是我需要首先獲取第1行,有什麼想法?

在UICollectionView的視圖控制器與數據源和委託:

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

在目標的視圖控制器:

override func viewDidLoad() { 
    super.viewDidLoad() 

    println("2") //line 2 
} 

P.S:推賽格瑞是從主要用的目標。

+0

你有沒有實施'prepareForSegue:發件人:'在收藏視圖的控制器? – 2015-04-03 02:32:42

+0

我有'prepareForSegue'但沒有內部,任何聲明是必要的? – 2015-04-03 02:37:09

回答

0

使用prepareForSender:segue:而不是collectionView:didSelectItemAtIndexPath:sender是竊聽的單元格。如果您需要索引路徑,可以使用indexPathForCell:(將sender作爲參數)從集合視圖中獲取它。

+0

謝謝!但我嘗試用'didHighlightItemAtIndexPath'替換'didSelectItemAtIndexPath',我可以得到我想要的!我發現'didHighlightItemAtIndexPath'在'prepareForSender'之前運行,如果我使用'didHighlightItemAtIndexPath'而不是'prepareForSender',會出現什麼錯誤? – 2015-04-03 02:54:43

1

使用didHighlightItemAtIndexPath而不是didSelectItemAtIndexPath解決了我的問題。

相關問題