2016-10-23 5 views
0
geladen

In class ViewController: NSViewControllerUserDefaults.didChangeNotification Brände jedes Mal, wenn Ansicht

class ViewController: NSViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Do any additional setup after loading the view. 
    } 

    override func viewWillAppear() { 
     super.viewWillAppear() 

     NotificationCenter.default.addObserver(self, selector: #selector(userDefaultsDidChange), name: UserDefaults.didChangeNotification, object: nil) 
    } 

    override func viewWillDisappear() { 
     super.viewWillDisappear() 

     NotificationCenter.default.removeObserver(self, name: UserDefaults.didChangeNotification, object: nil) 
    } 

    override var representedObject: Any? { 
     didSet { 
     // Update the view, if already loaded. 
     } 
    } 

    func userDefaultsDidChange() { 
     print("user defaults did change.") 
    } 

} 

Es gibt keinen anderen Code zu UserDefaults verwandt ist. Wenn die App startet, wird UserDefaults.didChangeNotification ausgelöst, wenn ich das Fenster mit ViewController berühre, wird UserDefaults.didChangeNotification erneut ausgelöst.

Ich weiß nicht, warum das passiert, da es überhaupt nichts geändert hat.

------------------- Das ist ein Fehler -------------------

Ich kontaktierte Apple mit TSI, Leute in Apple schlugen mir vor, einen Bug auf diese Datei zu schreiben. Ich tat. rdar://28928098

+0

Hat stellen Sie 'frameAutosaveName' oder "Automatisches Speichern" des Fensters? – Willeke

+0

Nein, es ist nur ein neu erstelltes Projekt. –

+0

Ich habe versucht, Ihren Code und 'userDefaultsDidChange' wird einmal ausgelöst. Was meinst du mit "wenn ich das Fenster berühre"? – Willeke

Antwort

0

Versuchen Sie es in Ihrem viewDidLoad Aufruf()

override func viewDidLoad() { 
     super.viewDidLoad() 

     NotificationCenter.default.addObserver(self, selector: #selector(userDefaultsDidChange), name: UserDefaults.didChangeNotification, object: nil) 
     // Do any additional setup after loading the view. 
    } 

    override func viewWillAppear() { 
     super.viewWillAppear() 


    } 
+0

Gleiches Ergebnis ... –

+0

haben Sie Ihre viewWillAppear() Methode entfernt? –

+0

Ich habe. Gleiches Ergebnis. –

Verwandte Themen