繁体   English   中英

在Swift 2中从UICollectionView传递数据

[英]Pass Data from UICollectionView in Swift 2

我的问题是我想将数据从集合视图传递到新视图(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:字符串? 将在DetailsViewController上为NIL。

救命!

performSegueWithIdentifier将实例化适当的目标控制器并显示它。 由于从未显示myVC因此在此处实例化的DetailsTableViewController 您有几种方法可以解决此问题:

如果要使用segues,则在didSelectItemAtIndexPath触发segue,并实现prepareForSegue将数据传递到目标视图控制器(在传递给该方法的UIStoryboardSegue上可以使用destinationViewController )。

或者,您可以避免使用segues并将myVC直接推到当前导航控制器上来展示myVC (如果存在,则可以调用self.navigationController.pushViewController(myVC, animated:true) ),将其展示为模式,或其他有意义的展示在您的应用中。

问题解决了。 谢谢

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!
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM