繁体   English   中英

无法从基类 UIViewController 继承属性

[英]Unable to inherit properties from base UIViewController class

我是 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")
}

我在网上和 SO 上搜索了类似的问题,但找不到答案。 我没有发现我的代码有任何根本性的错误。 我正在使用 Xcode 7.2.1 并在 iOS 8+ 上进行测试。 也在 Xcode 7.2.3 beta 中进行了测试,但结果相似。

在我看来,这不是继承问题。 如果您在 BaseViewController 的viewDidLoad中设置断点,它确实会执行该代码。 我认为您的问题是如何更改色调颜色。 在 iOS 中自定义导航栏是如此痛苦,以至于我通常不会使用导航控制器,而最终只是创建自己的顶部栏视图,我可以完全自定义。

如果您尝试更改整个应用程序的左右栏项的色调颜色,请将此代码放在application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?)内的 AppDelegate 文件中application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?)函数:

UINavigationBar.appearance().tintColor = UIColor.greenColor()

这是我创建的一篇博客文章,展示了如何更改 UINavigationBar 的其他颜色: Navigation Bar Colors

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM