是否可以从协议扩展中访问navigationItem?例如,如果我想将以下代码放在协议扩展中:
let customTitleView = UIView() // some custom view
navigationItem.titleView = customTitleView
但是,这会出现一个错误,指出navigationItem是一个未解析的标识符,即它无法检测到它。我想这是因为它不是UIViewController的子类。是否有另一种方法可以从协议扩展中获取navigationItem?
答案 0 :(得分:0)
这样的事情有用吗?
protocol NavigationBarStyleable {
var titleView: UIView { get }
func style()
}
extension NavigationBarStyleable where Self: UIViewController {
var titleView: UIView {
return UIView()
}
func style() {
navigationItem.titleView = titleView
}
}