我有一个集合视图。每个项目都应该将数据传递给第二个视图,在其他世界中我想通过navigationController
将当前视图传递给第二个视图。
class GroupsViewController: UIViewController ,UICollectionViewDataSource, UICollectionViewDelegate {
....
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
// handle tap events
var group = self.items[indexPath.item]
var cat_title = group.cat_title
self.navigationController!.pushViewController(self.storyboard!.instantiateViewController(withIdentifier: "GroupSubOneTableViewController") as UIViewController, animated: true)
}
....
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
print("ooopps")
if (segue.identifier == "GroupSubOneTableViewController") {
let navController = segue.destination as! UINavigationController
let detailController = navController.topViewController as! GroupSubOneTableViewController
//detailController.currentId = nextId!
print("selected GroupSubOneTableViewController")
}
}
但在控制台日志中没有显示任何内容!
答案 0 :(得分:2)
你在这里混合了perfomSegue
和pushViewController
两件事。使用performSegue
执行segue时会调用performSegue(withIdentifier:sender:)
。因此,请从SourceVC
到DestinationVC
创建一个segue。
如果您想使用pushViewController
,只需输入广告UIViewController
即可ViewController
传递数据。
let vc = self.storyboard!.instantiateViewController(withIdentifier: "GroupSubOneTableViewController") as! GroupSubOneTableViewController
//pass vaue
vc.passStr = "Hello"
self.navigationController?.pushViewController(vc, animated: true)
答案 1 :(得分:1)
没有调用它,因为pushViewController
没有执行segue。
您需要拨打performSegue(withIdentifier: "GroupSubOneTableViewController", sender: self)
而不是pushViewController
。
当然,您还需要在故事板中进行设置。