我是iOS开发的新手,这可能是一个简单的问题。我的应用程序将有许多视图控制器将共享类似的属性。我创建了一个基础视图控制器类,它是UIViewController的子类。所有其他视图控制器都是基本视图控制器的子类。但是,我在基本视图控制器类中设置的属性不会被继承。例如,导航栏按钮应该都是绿色,但在构建应用程序时是默认的蓝色。
这是基本视图控制器类:
class BaseViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.leftBarButtonItem?.tintColor = UIColor.greenColor()
self.navigationItem.rightBarButtonItem?.tintColor = UIColor.greenColor()
}
这是上面基类视图控制器的其他视图控制器的代码:
class AboutViewController: BaseViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.title = NSLocalizedString("About", comment: "About page title")
}
我已经在网上搜索了类似的问题,但无法找到答案。我的代码中没有任何根本错误。我正在使用Xcode 7.2.1并在iOS 8+上进行测试。也在Xcode 7.2.3 beta中测试过,但结果相似。
答案 0 :(得分:1)
从我看来,这不是一个继承问题。如果在BaseViewController的viewDidLoad
中设置断点,它确实会执行该代码。我认为你的问题是如何改变色调颜色。在iOS中自定义导航栏是一件很痛苦的事情,我通常会偏离使用导航控制器,最后只是创建我自己的顶部栏视图,我可以完全自定义。
如果您尝试更改整个应用程序的左右栏项目的色调颜色,请将此代码放在application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?)
函数内的AppDelegate文件中:
UINavigationBar.appearance().tintColor = UIColor.greenColor()
这是我创建的博文,介绍如何更改UINavigationBar的其他颜色:Navigation Bar Colors。