我的问题是我想将数据从我的集合视图传递到新视图(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。
帮助!
答案 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!
}
}
}