이 question에서 설명한 것처럼 TableView의 UISwitch에서 다른 ViewController로 데이터를 전달하려고합니다. 그러나 UISwitch가 포함 된 설정보기를 닫을 때 데이터가 전달되기를 원합니다. 이 위대한 answer의 세 번째 단계를 수행 한 후, UserDefaults를 사용하여 데이터를 전달하고 SettingsCenter를 사용하여 Settings보기를 닫을 때 UserDefaults 값을 업데이트하려고합니다.뷰를로드하지 않고 알림 받기
사용자 기본값이 변경 될 때 업데이트하려면 설정 컨트롤러가 해지 할 때 알림을 게시하도록 설정할 수 있습니다. 그런 다음 앱의 다른 VC가이 알림을 수신하고 필요에 따라 업데이트 할 수 있습니다.
내가있는 viewDidLoad 내부의 통지를 검색 해봤지만, 설정보기를 기각하는 것은 새의 ViewController 매번를로드하지 않기 때문에 값이 갱신되지 않습니다.
설정보기를 닫을 때마다 알림을 받거나 읽는 방법은 무엇입니까? 보다 정확하게, 통지를 읽는 코드를 어디에 그리고 어떻게 써야할까요? ,
class ViewController: UIViewController {
@IBOutlet weak var testLabel: UILabel!
var savedValue = UserDefaults.standard.bool(forKey: "sound")
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(ViewController.viewDidLoad), name: Notification.Name("nSound"), object: nil)
//refresh the savedValue variable
savedValue = UserDefaults.standard.bool(forKey: "sound")
//test the savedValue variable
if (savedValue == true) {
testLabel.text = "yes"
} else {
testLabel.text = "no"
}
}
설정 컨트롤러가 다른 VC가 알림을받을 수있는시기를 추측하려고하는 것이 아니라 다른 VC가 필요할 때 데이터 모델에 요청하는 방법은 어떻습니까? ...'viewDidAppear' /'viewWillAppear'이 가능한 후보입니다. –
이미 viewDidAppear에서 알림을 수신하려고 시도했습니다. 그러나 이전과 마찬가지로보기가 매번 나타나지 않거나로드되지 않습니다. 언제나 배경에 있습니다. – Gabe12
"데이터 모델에 요청하십시오"는 "알림을받지 못했습니다."라고 말했습니다. 아마도 VC는 화면을 업데이트하는 지점에서 데이터 만 필요로합니다. –