簡體   English   中英

從協議擴展訪問navigationItem

[英]Access navigationItem from protocol extension

是否可以從協議擴展名訪問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
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM