2016-02-22 34 views
0

是否可以从协议扩展访问navigationItem?例如,如果我想要把下面的代码在一个协议扩展:从协议扩展访问navigationItem

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

然而,这出现一个错误称navigationItem是一个未解决的识别符,即,它不能检测到它。我想这是因为它不是UIViewController的子类。有没有其他的方法来从协议扩展中获取navigationItem?

+0

你试过吗?你能告诉我们你做了什么吗? – Breek

+0

@Breek刚刚更新了问题 – Tometoyou

+0

什么是扩展扩展?如果该类可以访问navigationItem,则该扩展将有权访问。 – Michael

回答

0

做这样的工作?

protocol NavigationBarStyleable { 
    var titleView: UIView { get } 
    func style() 
} 

extension NavigationBarStyleable where Self: UIViewController { 
    var titleView: UIView { 
     return UIView() 
    } 

    func style() { 
     navigationItem.titleView = titleView 
    } 
}