2014-09-03 66 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