从Swift 2中的UICollectionView传递数据

时间:2016-01-26 21:57:59

标签: ios uicollectionview swift2

我的问题是我想将数据从我的集合视图传递到新视图(tableview-但我认为这不是必要的信息)

override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
    let myVC = DetailsTableViewController()
    myVC.movieTitle = movies[indexPath.row].movieTitle!
    print (movies[indexPath.row].movieTitle!)
    performSegueWithIdentifier("DetailSegue", sender: reuseIdentifier)
}

打印没问题,但是我的movieTitle:String?在DetailsViewController上将是NIL。

帮助!

2 个答案:

答案 0 :(得分:0)

performSegueWithIdentifier将实例化一个合适的目标控制器并显示它。您在此处实例化为DetailsTableViewController的{​​{1}}永远不会显示。您有几个方法可以解决这个问题:

如果你想使用segues,那么在myVC中触发segue并实现didSelectItemAtIndexPath将数据传递到目标视图控制器(prepareForSegue将在destinationViewController上可用传递给那个方法)。

或者,您可以避免使用segues并直接将UIStoryboardSegue推送到您当前的导航控制器(如果存在,您可以调用myVC),将其作为模态或任何有意义的方式呈现在你的应用程序中。

答案 1 :(得分:0)

问题解决了。感谢

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "DetailSegue" {
        let detailsVC = segue.destinationViewController as! DetailsTableViewController
        if let cell = sender as? UICollectionViewCell, indexPath = collectionView!.indexPathForCell(cell) {
    // use indexPath
            detailsVC.movieTitle = movies[indexPath.row].movieTitle!
        }
    }
}