2017-12-03 23 views
0

이것은 계속 an earlier post입니다. 내가 궁금해 한건 어둠 모드에 대한 사용자 기본값을 앱 전체에 추가하는 방법이었습니다. 제 마지막 게시물에 UserDefaults라는 코드에 대해주의를 기울이지 마십시오. tutorial을 따르고 있었으며 사용자 기본값에 대해 전혀 모르는 상태에서 복사 한 내용 만 복사했습니다. 전체 어두운 모드는 앱 전체에서 아름답게 작동합니다. 모든 사용자 기본값을 수행하는 방법을 알아야합니다. 질문이 있으시면 언제든지 물어보십시오.사용자 기본값을 어둡게 모드로 추가

아래 코드는 설정보기 컨트롤러에있는 맞춤 셀이 아래와 같이 표시되어 앱을 어둡게 모드로 변경합니다. 모든 것이 훌륭하게 작동해야합니다. 액션에 사용자 기본값을 넣으면됩니다.

import UIKit 

class DarkModeTableViewCell: UITableViewCell { 
    var DarkisOn = Bool() 
    let userDefaults = UserDefaults.standard 

    @IBOutlet var darkModeSwitchOutlet: UISwitch! 

    override func awakeFromNib() { 
     super.awakeFromNib() 

     NotificationCenter.default.addObserver(self, selector: #selector(darkModeEnabled(_:)), name: .darkModeEnabled, object: nil) 
     NotificationCenter.default.addObserver(self, selector: #selector(darkModeDisabled(_:)), name: .darkModeDisabled, object: nil) 
    } 

    override func setSelected(_ selected: Bool, animated: Bool) { 
     super.setSelected(selected, animated: animated) 

     // Configure the view for the selected state 
    } 

    @IBAction func darkModeSwitched(_ sender: Any) { 
     if darkModeSwitchOutlet.isOn == true { 
      //enable dark mode 
      DarkisOn = true 

      //add a userDefault here so that the app will stay in dark mode 
      NotificationCenter.default.post(name: .darkModeEnabled, object: nil) 
     } else { 
      //enable light mode 
      DarkisOn = false 

      //add a userDefault here so that the app will stay in light mode 
      NotificationCenter.default.post(name: .darkModeDisabled, object: nil) 
     } 
    } 

    @objc private func darkModeEnabled(_ notification: Notification) { 
     DarkModeTableViewCellChange.instance.set(for: self) 
     textLabel?.textColor = UIColor.white 
    } 

    @objc private func darkModeDisabled(_ notification: Notification) { 
     LightModeTableViewCellChange.instance.set(for: self) 
     textLabel?.textColor = UIColor.black 
    } 
} 

편집 : 사용자가 어두운 모드에 기본값을 추가하는 방법을 찾고 있습니다. 일단 어두운 모드가 켜지면 앱을 닫을 때 등등 계속됩니다.

+2

다른 질문에 대한 링크를 게시하는 대신이 질문을 독자적으로 사용하십시오. 이 내용을 명확하고 간결하며 독립적 인 질문으로 만드십시오. – rmaddy

+0

더 좋습니까? – Jaqueline

+0

위의 코드가 올바르게 들여 쓰기되지 않아 쓸모없는 빈 줄이 포함되어 있습니다. 가능한 한 쉽게 읽을 수 있도록하십시오. –

답변

1

NSUserDefaults로하는 모든 작업은 설정을 저장하고 검색하는 것입니다. 사용자가 사용중인 테마를 저장합니다. 당신의 themable 뷰 컨트롤러의 viewWillAppear에서

let defaults = UserDefaults.standard 

// Do something like this when using changing your theme to dark mode. 
defaults.set(true, "darkModeEnabled") 

// Do something like this when changing your theme to your standard one 
defaults.set(false, "darkModeEnabled") 

당신은 단지의 가치를 확인 : (이미 이런 일을하고 있던 이전의 질문에) 당신의 테마를 변경할 때

그래서 같은 것을 할 UserDefaults에서 지정한 키.

/// Check if the user is using dark mode in viewDidLoad. 
override func viewWillAppear() { 
    super.viewDidLoad() 

    let darkModeEnabled = defaults.bool(forKey: "darkModeEnabled") 

    if darkModeEnabled { 
     // Apply your dark theme 
    } else { 
     // Apply your normal theme. 
    } 
} 

이렇게하면 앱을로드 할 때보기 컨트롤러가 올바른 테마를 갖게되고 사용자는 앱을로드 할 때 올바른 테마를 볼 수 있습니다.

추천 도서 : 제쳐두고 참고로 UserDefaults

, 당신이 YouTube에서 서비스하고있는 튜토리얼 시리즈가 그것 UserDefaults를 언급 사실에 의해 입증 할 수있는, 분명 초보자를위한 충분하지 않습니다, 심지어 그들을 사용하지만 분명히 어떻게 사용하는지 알려주지 않습니다. 대신 iOS 개발에 대한 좋은 책을 얻어야합니다.

+0

정말 고마워요! 나는 내일 오전 1 시부 터 이것을 점검 할 것이다. 내가 본 튜토리얼은 2 부 중 1 부는 만들어지지 않았기 때문에 사용자 기본값으로 수행 한 작업을 넘어서서 아무것도하지 못했습니다. – Jaqueline

+0

이 덕분에 정말 감사드립니다! – Jaqueline