gpt4 book ai didi

Swift:从 UICollectionViewCell 访问当前导航 Controller

转载 作者:行者123 更新时间:2023-12-02 20:50:00 27 4
gpt4 key购买 nike

我有一个 UICollectionViewCell 类“ProductCell”;我正在尝试访问当前的导航 Controller 以更新 barbuttonicon。我尝试了以下代码,因为这是我在其他 UIViewController 中使用的代码:

    let nav = self.navigationController as! MFNavigationController
nav.updateCartBadgeValue()

但是它指出

value of type ProductCell has no member navigationController

我知道这不是 UIViewController 但您肯定能够以相同的方式访问当前的导航 Controller 吗?

我还知道您可以按以下方式使用 UIApplication 访问导航 Controller :

let navigationController = application.windows[0].rootViewController as! UINavigationController

不过我不确定这是否是一个好方法。

非常感谢任何帮助

谢谢

最佳答案

UIResponder 链将在此处提供帮助。

您可以搜索响应者链以找到任何 View 的 Controller

extension UIView {

func controller() -> UIViewController? {
if let nextViewControllerResponder = next as? UIViewController {
return nextViewControllerResponder
}
else if let nextViewResponder = next as? UIView {
return nextViewResponder.controller()
}
else {
return nil
}
}

func navigationController() -> UINavigationController? {
if let controller = controller() {
return controller.navigationController
}
else {
return nil
}
}
}

controller() 将返回最近的 UIViewController 类型的响应者然后在返回的 Controller 上你只需要找到它的导航 Controller 。您可以在此处使用 navigationController()

关于Swift:从 UICollectionViewCell 访问当前导航 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42513775/

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