【问题标题】:extension for UIViewController is not Working change UIStatusBarStyle In SwiftUIViewController 的扩展在 Swift 中不起作用更改 UIStatusBarStyle
【发布时间】:2016-02-01 09:53:48
【问题描述】:

我正在尝试为 UIViewController 创建 extension 但它不起作用。我正在更改使用扩展的状态栏颜色,但我无法成功。但没有扩展是有效的。我是扩展程序的新手请帮助我。 我的目标是我不想在每个视图控制器上创建功能,减少重用性 创建扩展程序不起作用

extension UIViewController {

     func preferredStatusBarStyle_change() -> UIStatusBarStyle {
        return UIStatusBarStyle.LightContent
    }
}
//!!!!!!!!!view1
override func viewDidLoad() {
        super.viewDidLoad()
        //preferredStatusBarStyle();
        self.preferredStatusBarStyle_change();
    }
//!!!!!!!!!view2
override func viewDidLoad() {
        super.viewDidLoad()
        //preferredStatusBarStyle();
        self.preferredStatusBarStyle_change();
    }

没有扩展是有效的

View1
override func viewDidLoad() {
                super.viewDidLoad()
                preferredStatusBarStyle();
            }
override func preferredStatusBarStyle() -> UIStatusBarStyle {
            return UIStatusBarStyle.LightContent
        } 
View2

     override func viewDidLoad() {
                super.viewDidLoad()
                preferredStatusBarStyle();
            }

         override func preferredStatusBarStyle() -> UIStatusBarStyle {
                return UIStatusBarStyle.LightContent
            } 

帮助我尝试理解可重用性和扩展性

【问题讨论】:

    标签: swift statusbar reusability


    【解决方案1】:

    它不起作用,因为:

    Viewcontroller 将调用preferredStatusBarStyle() 来定义statusbar。实际上你删除了viewDidload 中的preferredStatusBarStyle();,你的控制器仍然可以工作。

    所以在你的情况下,你可以这样解决:

    你创建了一个UIViewController 的子类,它的名字可能是:BaseViewController,你把这个类放在:

    override func preferredStatusBarStyle() -> UIStatusBarStyle {
         return UIStatusBarStyle.LightContent
    } 
    

    现在您从BaseViewController 状态栏继承的所有ViewController 将始终.LightContent 您不需要将此代码放在每个位置上方。

    演示:Demo

    【讨论】:

    • 请给我任何链接它帮助我如何创建子类以及如何在我的主视图控制器中继承请
    • @user3899589 这很简单。我给你一个Demo。
    • @user3899589 查看我的演示
    • 我找到了这个文件“addContraint.m”我认为这个文件名中的示例链接在哪里。也许你在谈论这个链接“gist.github.com/vienvu89”?
    • @user3899589 这个文件呢?这是我为方便而创建的一些片段集的要点文件。
    猜你喜欢
    • 2014-08-05
    • 2016-03-26
    • 1970-01-01
    • 2015-03-01
    • 2016-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多