2014-09-03 81 views
1

我有一个BaseViewController与一个布尔属性hideStatusBar初始化为false属性初始值不变

import Foundation 
import UIKit 

class BaseViewController: UIViewController { 

    var hideStatusBar: Bool = false 

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

} 

在从该基类派生的亚类中,我hideStatusBar的值设置为true。但它似乎并没有改变价值。我仍然在prefersStatusBarHidden方法中出现错误。

该方法当然有效。我改变了财产的价值和真假,并进行了测试。

你怎么得到这个工作?

回答

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 
    } 
    */ 

} 
+0

你好POB。这样可行!谢谢。你能解释一下为什么在'awakeFromNib'里面定义它,但不在'viewDidLoad'中? – Isuru 2014-09-03 11:29:25

+0

当你推送一个新的UIViewController时,会在'viewDidLoad:'之前调用'awakeFromNib:'。事实上,当控制器本身从一个笔尖被解除存档时,会调用'awakeFromNib:'。 'viewDidLoad:'在创建视图时被调用。 – 2014-09-03 11:36:34

+0

哦,我明白了。谢谢。 – Isuru 2014-09-03 11:45:39