【发布时间】:2021-04-05 03:16:45
【问题描述】:
我正在尝试创建自定义导航栏,并希望在左侧添加标题并在右侧添加聊天图标。
就这样
但它没有显示任何项目。背景颜色是唯一有效的自定义。
我这样称呼它
let garageVC = HomeNavController(rootViewController: GarageRouter.assembleModule(), title: "My Garage")
我的导航课
import UIKit
class HomeNavController: UINavigationController {
var tabTitle: String?
init(rootViewController: UIViewController, title: String) {
super.init(rootViewController: rootViewController)
self.tabTitle = title
configure()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func viewDidLoad() {
super.viewDidLoad()
configure()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
configure()
}
private func configure() {
navigationBar.isHidden = false
navigationBar.isTranslucent = false
navigationBar.tintColor = .white
navigationBar.barTintColor = .primary
let nameLabel = UILabel(frame: .zero)
nameLabel.textColor = .white
nameLabel.tintColor = .white
nameLabel.text = tabTitle
navigationItem.leftBarButtonItem = UIBarButtonItem(customView: nameLabel)
let chatButton = UIButton(type: .system)
chatButton.setImage(UIImage(named: "home-chat")?.withRenderingMode(.alwaysOriginal), for: .normal)
navigationItem.rightBarButtonItem = UIBarButtonItem(customView: chatButton)
chatButton.imageEdgeInsets = UIEdgeInsets(top: 0.0, left: 0, bottom: 0, right: -10)
chatButton.addTarget(self, action: #selector(chatClicked), for: .touchUpInside)
}
@objc func chatClicked() {
print("Chat clicked")
}
}
输出
【问题讨论】:
标签: ios swift uinavigationcontroller uinavigationbar viper-architecture