2017-09-22 81 views
0

我在我的項目(Swift)中有一個TableViewController和一個ViewController。我有一個開關,改變我的應用程序的顏色(黑暗)。問題在於,它只是在我所處的場景中改變它。如果我去另一個場景,它是白色的。暗模式打開應用程序

我的代碼:

import UIKit 

class BaseTableViewController: UITableViewController { 
    @IBOutlet var InicioTable: UITableView! 
    @IBOutlet weak var cell2: UITableViewCell! 
    @IBOutlet var viewTable: UITableView! 
    @IBOutlet weak var celldarkmode: UITableViewCell! 
    @IBOutlet weak var label: UILabel! 
    @IBOutlet weak var switchController: UISwitch! 

    @IBAction func changeSwitch(_ sender: UISwitch) { 
     if switchController.isOn == true 
     { 
      self.navigationController?.navigationBar.isTranslucent = false 
      self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]//user global variable 
      self.navigationController?.navigationBar.barStyle = UIBarStyle.black //user global variable 
      self.navigationController?.navigationBar.tintColor = UIColor.black //user global variable 
      UIApplication.shared.statusBarStyle = .lightContent 
      label.textColor = UIColor.white 
      self.cell2.backgroundColor = UIColor.black 
      self.tabBarController?.tabBar.barTintColor = UIColor.black 
      view.backgroundColor = UIColor.init(red: 0.1, green: 0.1, blue: 0.1, alpha: 1.0) 
     } 
     else 
     { 
      self.navigationController?.navigationBar.isTranslucent = false 
      self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.black]//user global variable 
      self.navigationController?.navigationBar.barStyle = UIBarStyle.default //user global variable 
      self.navigationController?.navigationBar.tintColor = UIColor.white //user global variable 
      UIApplication.shared.statusBarStyle = .default 
      label.textColor = UIColor.black 
      self.cell2.backgroundColor = UIColor.white 
      self.tabBarController?.tabBar.barTintColor = UIColor.white 
      view.backgroundColor = UIColor.groupTableViewBackground 
     } 
    } 
} 
+0

包含一些代碼來顯示你在做什麼。一般情況下,您需要在視圖之間複製切換狀態,可以通過使用segue來捕獲目標視圖控制器,並在顯示屬性之前設置屬性,或者通過將切換狀態保存爲UserDefaults或通過實現一個單例國家班。 –

+0

我在這裏粘貼了我的代碼。因爲我是新手,所以帶屏風的說明對我來說更好,但我會記下這一點。 –

回答

3

使用用戶默認保存在您的應用程序,開關狀態:

@IBAction func changeSwitch(_ sender: UISwitch) { 
    let isDarkMode = userDefaults.bool(forKey: "isDarkMode") 
    if isDarkMode == true { 
     UserDefaults.standard.set(false, forKey: "isDarkMode") // Set the state 
    } 
    else { 
     UserDefaults.standard.set(true, forKey: "isDarkMode") // Set the state 
    } 
} 

然後將所有視圖,更改代碼到viewDidLoad()每個視圖控制器其中您想要更改顏色:

override func viewDidLoad() { 

    super.viewDidLoad() 

    let isDarkMode = UserDefaults.standard.bool(forKey: "isDarkMode") // Retrieve the state 

    if isDarkMode == true { 
     self.navigationController?.navigationBar.isTranslucent = false 
     self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]//user global variable 
     self.navigationController?.navigationBar.barStyle = UIBarStyle.black //user global variable 
     self.navigationController?.navigationBar.tintColor = UIColor.black //user global variable 
     UIApplication.shared.statusBarStyle = .lightContent 
     label.textColor = UIColor.white 
     self.cell2.backgroundColor = UIColor.black 
     self.tabBarController?.tabBar.barTintColor = UIColor.black 
     view.backgroundColor = UIColor.init(red: 0.1, green: 0.1, blue: 0.1, alpha: 1.0) 
    } 
    else { 
     self.navigationController?.navigationBar.isTranslucent = false 
     self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.black]//user global variable 
     self.navigationController?.navigationBar.barStyle = UIBarStyle.default //user global variable 
     self.navigationController?.navigationBar.tintColor = UIColor.white //user global variable 
     UIApplication.shared.statusBarStyle = .default 
     label.textColor = UIColor.black 
     self.cell2.backgroundColor = UIColor.white 
     self.tabBarController?.tabBar.barTintColor = UIColor.white 
     view.backgroundColor = UIColor.groupTableViewBackground 
    } 
} 
+0

嘿,謝謝你的幫助,但我其實不瞭解你,你能不能一步一步向我解釋一下?或者發送屏幕截圖,就像我不知道如何在ViewController上檢索它一樣,謝謝。 –

+0

@ A.Samuel沒有什麼可以截圖的。您正在保存用戶選擇的偏好設置(黑暗或光照),然後在每個視圖控制器中檢索已保存的設置。閱讀關於Userdefaults:https://stackoverflow.com/questions/31203241/how-to-use-nsuserdefaults-in-swift – Shades

+0

最後!!! omg非常感謝你,它確實工作! –

相關問題