在 UINavigationController 中设置自定义导航栏类
Posted
技术标签:
【中文标题】在 UINavigationController 中设置自定义导航栏类【英文标题】:Set custom navigation bar class in UINavigationController 【发布时间】:2014-09-09 10:29:57 【问题描述】:我有一个自定义导航栏:
class Name_UINavigationBar: UINavigationBar
// code
我想以编程方式将其设置为我的导航控制器。所以我尝试了:
var navController : UINavigationController = UINavigationController(
navigationBarClass: object_getClass(Name_UINavigationBar),
toolbarClass: nil)
// code
但它崩溃说:
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException',
reason: 'MyProject.Name_UINavigationBar is not a subclass of UINavigationBar'
【问题讨论】:
【参考方案1】:试试这个。
let navController = UINavigationController(navigationBarClass: YourNavigationBar.self, toolbarClass: nil)
我遇到了同样的错误,并且能够让它再次像那样工作。
【讨论】:
【参考方案2】:在 Swift 中,不支持获取对象类的方法。您的问题几乎肯定与 object_getClass
方法有关,我认为从 Beta 5 开始不再支持该方法。
我想像这样的 API 要么会被更新、重写,要么很快就会被弃用。现在你需要在 Objective-C 中完成。
【讨论】:
我在 xcode 6 beta 7 上,它没有说明 object_getClass。但你说的似乎是一个很好的解释。以上是关于在 UINavigationController 中设置自定义导航栏类的主要内容,如果未能解决你的问题,请参考以下文章
在 UINavigationController 内的 UITabBarcontroller 中添加 UINavigationController?
从嵌入在 UINavigationController 中的一个视图控制器到另一个 UINavigationController
(Swift) 在嵌套在 Main UINavigationController 中的 UINavigationController 和 UITabController 之间切换
关闭 UINavigationController 并呈现另一个 UINavigationController
带有主 UINavigationController 和详细 UINavigationController 的 UISplitViewcontroller