【问题标题】:Swift - push & pop UIViewcontroller not workingSwift - 推送和弹出 UIViewcontroller 不起作用
【发布时间】:2020-03-07 15:09:41
【问题描述】:

我的ViewControllers 有问题。有谁知道为什么该代码不起作用? print 函数工作...

A 到 B

    @IBAction func editButtonTapped(_ sender: Any) {
    let imageCollectionView = self.storyboard?.instantiateViewController(withIdentifier: "ImageCollectionVC") as! ImageCollectionViewController
    imageCollectionView.delegate = self
    self.navigationController?.pushViewController(imageCollectionView, animated: true)
    print("editButtonTapped")
}



}

    extension ExampleViewController: ClassBDelegate {
            func childVCDidComplete( with image: UIImage?) {
                self.pickedImage = image!
            }
    }

B 到 A

 protocol ClassBDelegate {
    func childVCDidComplete(with image: UIImage?)
}

class ImageCollectionViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout{

    @IBOutlet weak var imageCollectionView: UICollectionView!

    var delegate: ClassBDelegate?
var tappedImage = UIImage()

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
   tappedImage = images[indexPath.row]
   delegate?.childVCDidComplete(with: tappedImage)
   navigationController?.popViewController(animated: true)
}

这是我的完整项目:https://github.com/chriskonnerth/Wishlist

ViewController A 在我的例子中是 ExampleViewController 而 B 是 ImageCollectionViewController

更新

那是我的故事板:

ImageViewController 是右边,ExampleViewController 是左边。

【问题讨论】:

  • “不工作”是什么意思?应该发生什么,实际发生了什么?
  • 什么也没发生。这就是问题
  • editButtonTapped 应该带你到ImageCollectionViewController 并点击cell 应该带你回到ExampleViewController
  • 好的。那么editButtonTapped 是否打印“editButtonTapped”?如果不是,则该按钮未连接。如果是这样,问题是您没有导航控制器,因此无处可推。
  • 是的,我也测试了didSelectItemAt,它被调用了,这就是我没有得到的:(

标签: ios swift uiviewcontroller delegates


【解决方案1】:

检查下面代码行中的navigationController实例:

self.navigationController?.pushViewController(imageCollectionView, animated: true)

如果 self.navigationController 为 nil,那么您的 ExampleViewController 可能没有嵌入导航控制器。

然后你需要将你的第一个控制器嵌入到导航控制器中。 To add navigation controller -

【讨论】:

  • 它是 nil :( 但我真的不明白如何将我的 vc 嵌入导航控制器。
  • 转到故事板。在情节提要中选择您的控制器。然后转到编辑器并嵌入 i 导航控制器。在答案中附上屏幕截图。
  • 我应该为他们两个都这样做吗?
  • 仅适用于第一个视图控制器。
  • 我还需要改变什么吗?或者以某种方式将它与第二个 ViewController 链接起来?
猜你喜欢
  • 1970-01-01
  • 2015-08-14
  • 2011-02-17
  • 2012-09-18
  • 1970-01-01
  • 1970-01-01
  • 2020-08-25
  • 2012-01-24
  • 2012-09-28
相关资源
最近更新 更多