【发布时间】:2019-03-22 16:43:04
【问题描述】:
我正在尝试按照 MaterialComponents 的 UINavigationController 的自定义子类将 MDC 应用栏添加到我的应用中。我在他们的Github page 上进行了简洁的描述:
使用应用栏最简单的集成路径是通过 MDCAppBarNavigationController。此 API 是 UINavigationController 的子类,它会自动将 MDCAppBarViewController 实例添加到每个推送到它的视图控制器上,除非已经存在应用栏或灵活标题。
使用 MDCAppBarNavigationController 时,您至少需要使用委托配置添加的应用栏的背景颜色。
navigationController.pushViewController(<#T##viewController: UIViewController##UIViewController#>, animated: <#T##Bool#>) // MARK: MDCAppBarNavigationControllerDelegate func appBarNavigationController(_ navigationController: MDCAppBarNavigationController, willAdd appBarViewController: MDCAppBarViewController, asChildOf viewController: UIViewController) { appBarViewController.headerView.backgroundColor = <#(UIColor)#> }
在我的故事板中,我添加了一个UINavigationController,并在身份检查器中将其身份设置为MDCAppBarNavigationController。
在我的根视图控制器中,我实现了MDCAppBarNavigationControllerDelegate:
class MyViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
title = "My app"
if let nav = navigationController as? MDCAppBarNavigationController {
print("[MyViewController] Setting delegate MDCAppBarNavigationControllerDelegate")
nav.delegate = self
}
}
// MARK: MDCAppBarNavigationControllerDelegate
func appBarNavigationController(_ navigationController: MDCAppBarNavigationController,
willAdd appBarViewController: MDCAppBarViewController,
asChildOf viewController: UIViewController) {
print("Setting app bar color")
appBarViewController.headerView.backgroundColor = .red
}
}
当我运行应用程序时,我看到了一个普通的导航栏,并且从未调用过委托方法。我做错了什么?
【问题讨论】:
标签: ios swift uinavigationcontroller mdc-components