我正在尝试更改Product
中的标题,但是navigationItem
有所不同。与navigationItem
中的Container
中的Product
有何不同?
class VC1: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let controller = Container()
let navigation = UINavigationController(rootViewController: controller)
navigationController?.pushViewController(navigation, animated: true)
}
}
class Container: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
print(navigationItem)
navigationItem.title = "test"
let controller = Product()
controller.didMove(toParentViewController: self)
self.addChildViewController(controller)
view.addSubview(controller.view)
}
}
class Product: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
print(navigationItem)
navigationItem.title = "" // Doesn't remove the title
}
}
答案 0 :(得分:0)
我正在阅读navigationItem
的文档,内容如下:
这是UINavigationItem的唯一实例,创建该UINavigationItem的目的是将视图控制器推入导航控制器时。
但是,在您的情况下,嵌入式VC并不是导航控制器的直接子代。
因此,我尝试了以下代码,并且可以正常工作。关键部分是我覆盖navigationItem
以在有父视图控制器的情况下返回父项的导航项。
override var navigationItem: UINavigationItem {
if let parentItem = parent?.navigationItem {
return parentItem
} else {
return super.navigationItem
}
}