准备未调用的函数 - swift 3

时间:2017-03-15 14:27:28

标签: ios swift xcode swift3

我有一个集合视图。每个项目都应该将数据传递给第二个视图,在其他世界中我想通过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")
        }
    }

但在控制台日志中没有显示任何内容!

2 个答案:

答案 0 :(得分:2)

你在这里混合了perfomSeguepushViewController两件事。使用performSegue执行segue时会调用perform​Segue(with​Identifier:​sender:​) 。因此,请从SourceVCDestinationVC创建一个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

当然,您还需要在故事板中进行设置。