gpt4 book ai didi

swift - 不同的 NavigationItem

转载 作者:行者123 更新时间:2023-11-28 07:44:25 26 4
gpt4 key购买 nike

VC1 嵌入在 NavigationController 中。在 VC1 中,我正在设置一个新的 VC2 并将其嵌入到一个新的 NavigationController 中。我想在设置 VC2 时添加一个按钮,以便访问 navigationItem,但该按钮未显示。我已经检查了 VC1VC2 中的 navigationItem 并且它们具有相同的内存地址。我做错了什么?

class VC1: UIViewController {

let button = UIButton()

func changeView() {
let controller = VC2()
let navigation = UINavigationController(rootViewController: controller)

button.sizeToFit()

navigation.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: button)

print("VC1: ", Unmanaged.passUnretained(navigation.navigationItem))

navigationController?.pushViewController(navigation, animated: true)
}
}

class VC2: UIViewController {

override func viewDidAppear(_ animated: Bool) {
super. viewDidAppear(animated)

print("VC2: ", Unmanaged.passUnretained(navigationItem)) // same memory
}
}

最佳答案

不要设置导航 Controller 的navigationItem。在 View Controller 上设置它。导航 Controller 在其堆栈中显示来自顶 View Controller 的导航项。

所以行:

navigation.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: button)

应该是:

controller.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: button)

除此之外,您的打印语句是正确的。在 VC1 中,您打印导航 Controller 的导航项。由于 VC2 是顶 View Controller ,它会显示 VC2 的导航项。

关于swift - 不同的 NavigationItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51461099/

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