gpt4 book ai didi

ios - 在容器 View 中选择集合单元格时更改导航左栏按钮标题

转载 作者:行者123 更新时间:2023-11-28 09:47:42 25 4
gpt4 key购买 nike

我在容器 View 中有一个 Collection View 。在 Collection View 中,我有两个部分,UICollectionReusableViewUICollectionViewCell。在 UICollectionReusableView 中,我再次有一个 Collection View ,从该单元格中选择一个单元格时,我必须更改 LeftNavigationBarTitle。我在 Collection View 的 didSelectItem 中尝试了以下代码,但没有任何反应。

navigationItem.leftBarButtonItem = UIBarButtonItem(image: UIImage(named: "cancel-music")?.withRenderingMode(.alwaysOriginal), style: .plain, target: self, action: #selector(self.closeViewTapped)).

我使用了上面的代码,但它并没有改变导航按钮。

这是我的 Storyboard设计。
我的代码有什么错误吗,请帮助我得到准确的代码。谢谢。

最佳答案

为包含 Collection View 的 View Controller 创建协议(protocol)方法。

HomeFilterVC 内部

protocol HomeFilterVCDelegate: class {
func collectionViewDidTapped()
}

然后,像下面这样声明委托(delegate)变量,它将分配给包含 UIContainerView 的 View Controller 。

class HomeFilterVC: UIViewController {

weak var delegate : HomeFilterVCDelegate?

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
if let selfDelegate = self.delegate {
selfDelegate.collectionViewDidTapped()
}
}
}

HomeVC 中实现 prepare(for segue:, sender:)HomeFilterVCDelegate 方法,并更新您的代码如下。

首页VC:

class HomeVC: UIViewController {

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

if segue.identifier == "HomeFilterVC" {

let collectionVC = segue.destination as! HomeFilterVC
collectionVC.delegate = self
}
}
}

extension HomeVC: HomeFilterVCDelegate {

func collectionViewDidTapped() {
navigationItem.leftBarButtonItem = UIBarButtonItem(image: UIImage(named: "cancel-music")?.withRenderingMode(.alwaysOriginal), style: .plain, target: self, action: #selector(self.closeViewTapped)).
}
}

我希望这能解决您的问题。

关于ios - 在容器 View 中选择集合单元格时更改导航左栏按钮标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56524145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com