ios - 从协议(protocol)扩展访问 navigationItem

标签 ios swift

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

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

但是,这会出现错误,指出 navigationItem 是未解析的标识符,即它无法检测到它。我想这是因为它不是 UIViewController 的子类。是否有其他方法可以从协议(protocol)扩展获取 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/

相关文章:

ios - 自定义 UIView 并从 UIView 内部的变量设置和获取自定义值

ios - 在 App Store 中允许通过视频复制 iOS 库音乐吗?

iphone - 应用程序从后台进入前台

swift - 将项目添加到数组后 TableView 不更新

swift - 比较 NSIndexPath Swift

ios - 不使用 AppDelegate 获取 UIWindow

ios - iOS 上 AIR Mobile 中的声学回声消除 - 使用 native 扩展?

ios - “此处不允许使用对多 key ”异常,但为什么呢?

ios - 重新加载数据后,UITableView 中的 UIView 动画不起作用

快速使用谓词