![](/img/trans.png)
[英]Swift / pass data from UICollectionView to DetailView / Custom button
[英]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.