【问题标题】:Property initial value doesn't change属性初始值不变
【发布时间】:2014-10-27 19:49:58
【问题描述】:

我有一个 BaseViewController 和一个名为 hideStatusBar 的布尔属性,初始化为 false

import Foundation
import UIKit

class BaseViewController: UIViewController {

    var hideStatusBar: Bool = false

    override func prefersStatusBarHidden() -> Bool {
        return hideStatusBar
    }

}

在从这个基类派生的子类中,我将hideStatusBar 的值设置为true。但它似乎并没有改变价值。我仍然在prefersStatusBarHidden 方法中得到错误。

该方法确实有效。我更改了属性的值和真假并进行了测试。

你怎样才能让它工作?

【问题讨论】:

    标签: ios properties swift boolean ios8


    【解决方案1】:

    以下代码应该适用于您的 BaseViewController 子类:

    import UIKit
    
    class SubViewController: ViewController {
    
        override func awakeFromNib() {
            hideStatusBar = false
        }
    
        override func viewDidLoad() {
            super.viewDidLoad()
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
    
        /*
        override func prefersStatusBarHidden() -> Bool {
            return hideStatusBar
        }
        */
    
    }
    

    【讨论】:

    • 你好 POB。这样可行!谢谢你。您能解释一下为什么在awakeFromNib 中定义它有效,但在viewDidLoad 中无效?
    • 当你推送一个新的 UIViewController 时,awakeFromNib:viewDidLoad: 之前被调用。事实上,awakeFromNib: 是在控制器本身从 nib 中取消归档时调用的。 viewDidLoad: 在创建视图时被调用。
    猜你喜欢
    • 2021-08-28
    • 1970-01-01
    • 1970-01-01
    • 2015-03-23
    • 2016-07-17
    • 1970-01-01
    • 2015-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多