2017-06-13 61 views
0

我想我收集的资料(list.assets_id)要分析DetailChannel如何发送collectionView数据到swift3中的另一个ViewController?

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 

     vedioId = id 

} 
func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

    if segue.identifier == "detailChannel"{ 

     let destinationVC = segue.destination as! DetailsChannel 
     destinationVC.vedio_id = vedioId 
    } 
} 

在我DetailChannel,

override func viewDidLoad() { 
     super.viewDidLoad() 
     debugPrint("DetailsChannel:::::\(vedio_id)") 

     if let stringVideo = vedio_id { 
      print(stringVideo) 
     } 
} 

,但没有工作,我的项目,并没有叫FUNC准备()。如何解决?

+0

这样做的最好方法是在初始化程序中进行依赖注入,唯一的问题是Swift和Storybaords是垃圾,所以向您解释这意味着什么,您不会得到它 – Loxx

+0

您是否添加了有效的'segue' 'CollectionViewController'设置为'DetailChannel'?如果是这样,你是如何添加它的? – nayem

+0

没有调用prepare()并直接转到DetailChannel,这就是为什么DetailChannel没有从CollectionViewController获取数据的原因。我想调用prepare()并将数据发送到Next View。我想知道为什么不打电话准备@nayem –

回答

0

我想你已经添加segueCollectionViewCellDetailChannel。删除那个segue

现在从您的CollectionViewControllerCollectionViewCell)添加到segueDetailChannel。如果你不知道如何添加它,这里的过程是:从CollectionViewControllerDetailChannel

  1. 第一控制拖动和放手。 visualize here

  2. 然后选择segue并将其命名为(在你的情况detailChannel)有意义的事情给你。 visualize here

现在你collectionView(_:didSelectItemAt:)方法中加入这一行:

performSegue(withIdentifier: "detailChannel", sender: self) 

我希望你prepare(for:sender:)现在被称为。

+0

当我加入 performSegue(withIdentifier:“detailChannel”,sender:self) “使用未解析的标识符performSegue'发生。 –

+0

@SanSan不,不应该,请尝试自己写。这里。 – nayem

相关问题