2017-09-22 56 views
0

私は自分のプロジェクト(Swift)にTableViewControllerとViewControllerを持っています。私は私のアプリの色を暗くするスイッチを持っています。問題は、私が入っているシーンでのみ変化することです。別のシーンに行くと、それは白です。ダークモードの切り替えアプリケーション

マイコード:その後、

@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()に、すべてのビューを変えるコードを移動:

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

あなたがしていることを示すためのコードをいくつか含みます。一般に、ビューの間でスイッチ状態をコピーする必要があります。宛先ビューコントローラをキャプチャして表示する前にプロパティを設定するか、スイッチ状態を 'UserDefaults'に保存するか、シングルトン状態クラス。 –

+0

ここに私のコードを貼り付けました。私はこれで新しくなって以来、スクリーニングの手順は私にとっては優れていますが、私は注意を払います。 –

答えて

3

使用ユーザーのデフォルトのアプリでそのスイッチの状態を保存するそれぞれの表示コントローラの色を変更したい場合:

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

最後に!!!私はあまりにもありがとう、それは働いた! –