从协议扩展

时间:2016-02-22 22:32:44

标签: ios swift

是否可以从协议扩展中访问navigationItem?例如,如果我想将以下代码放在协议扩展中:

let customTitleView = UIView() // some custom view
navigationItem.titleView = customTitleView

但是,这会出现一个错误,指出navigationItem是一个未解析的标识符,即它无法检测到它。我想这是因为它不是UIViewController的子类。是否有另一种方法可以从协议扩展中获取navigationItem?

1 个答案:

答案 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
    }
}