【发布时间】:2018-08-02 11:44:20
【问题描述】:
我正在尝试更改 Product 中的标题,但不知何故 navigationItem 有所不同。为什么Container 中的navigationItem 与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
}
}
【问题讨论】:
-
您希望在 Container 中使用什么标题,在 Product 中使用什么?问题不清楚
-
产品不会被推送,而是会被添加,您可以在添加产品控制器时将容器的标题设置为您想要的任何内容。然后你就可以看到标题了。
-
@ShahzaibQureshi 是的,我要在
Container中更改标题。我仍然不明白navigationItem是如何工作的。 -
尝试从 'title="YOUR_TITLE"' 而不是 'navigationItem.title="YOUT_TITLE"' 设置标题
-
@HennyLee navigationItem 显示在一个控制器中,该控制器要么是 UINavigationController 的根控制器,要么是由 viewController 使用其 navigationController 推送的。您正在为产品设置标题,但产品既没有被推送,也不是 UINavController 的根,因此它的 NavigationItem 为 nil,因此您无法在其上设置标题。