是否可以从协议扩展名访问navigationItem?例如,如果我要将以下代码放入协议扩展中:
let customTitleView = UIView() // some custom view
navigationItem.titleView = customTitleView
但是,这会出现一个错误,说明navigationItem是一个无法解析的标识符,即它无法检测到它。我猜这是因为它不是UIViewController的子类。是否有从协议扩展中获取navigationItem的替代方法?
最佳答案
这样的事情行吗?
protocol NavigationBarStyleable {
var titleView: UIView { get }
func style()
}
extension NavigationBarStyleable where Self: UIViewController {
var titleView: UIView {
return UIView()
}
func style() {
navigationItem.titleView = titleView
}
}
关于ios - 从协议(protocol)扩展访问navigationItem,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35565263/