我遇到了一个问题:我有一个项目有很多 segues 和 vc。在我将一些 ViewController 更改为 TableViewController 之后,对此的 segue 将不再起作用。我从 Cocoa-Class 创建了一个空白的 TableViewController 作为 UITableViewController 的子类。我正在使用故事板和 IB。在 StartViewController 中,我有一个带有协议 HomeTableViewCellDelegate 的 tableView 和一些功能。其中之一是 didTapPostImage()。在我有
func addTapGestureToPostImage(){ let tapGesture = UITapGestureRecognizer(target: self, action: #selector(handleTapPost)) postImageView.isUserInteractionEnabled = true postImageView.addGestureRecognizer(tapGesture) } @objc func handleTapPost(){ guard let post = post else { return } print("TEMP - 1. HOMETABLEVIEWCELL -> POST BILD CLICKED -> \(post.id ?? "STANDARD")") delegate?.didTapPostImage(post: post) }
的单元格中,这在awakeFromNib中被调用 - > addTapGestureToPostImage()在tableView的StartViewController中我有override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "feedToSinglePostViewNeu" { print("TEMP - 2. SEGUE PREPARE -> \(self.post?.id ?? "DEFAULT")") let singlePostVC = segue.destination as! SinglePostViewController singlePostVC.post = self.post } }
并且在StartViewController的扩展中我有这个:extension StartViewController: HomeTableViewCellDelegate { func didTapPostImage(post: PostModel) { self.post = post print("TEMP - 2. START -> MAKE SEGUE \(post.id ?? "DEFAULT")") self.performSegue(withIdentifier: "feedToSinglePostViewNeu", sender: self) } }
所以我的问题是当我在我的单元格中单击帖子图片时,带有标识符的 segue 将不起作用!我插入“打印”以检查调用了哪个部分,没有调用。我认为正确的指南是:单击图像是 1.,然后 2. 准备,然后 3. 执行,但我的控制台输出是:TEMP - 1. HOMETABLEVIEWCELL -> POST BILD GEKLICKT -> -NOyGMWvvrXz0Gjn0-W1 TEMP - 3. STARTVIEWCONTROLLER -> PERFORM SEGUE -> -NOyGMWvvrXz0Gjn0-W1 TEMP - 2. PREPARE SEGUE -> -NOyGMWvvrXz0Gjn0-W1 因此,每个部分都被调用但 TableViewController 没有出现。 信息: 从我的项目中的任何一点都无法访问 TableViewController。 我错过了什么? 所有其他 segues 工作正常。我试图重命名标识符,但这也没有用!当目标 vc 不是 ViewController 时会不会有问题?在我将它修改为 TableViewController 之前,它是一个带有 tableView 的 ViewController。提前致谢 PS:xCode 14.2,iMac Ventura 13.1 上的 Swift 5.0 试图重命名 segue 标识符。尝试打印每一步以找出会发生什么删除 segue 并从头开始创建一个新的。尝试调度主队列