![](/img/trans.png)
[英]Inherit from a class that inherit from a UIVIewcontroller (xamarin and c#)
[英]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.