Mein Xcode-Debugger berichtet, alle anderen Werte enthalten lebendig (Bool-Wert) ist gesetzt, außer alle IBOutlets gefunden Null (myLine
, etc.). By the way, alles funktioniert, wenn ich den gesamten Code in App Delegate löschen, aber ich brauche diese Ansicht häufig zu aktualisieren, also implementieren Sie es in ApplicationWillEnterForeground erforderlich ist. Und noch etwas, das es wert ist, darauf hinzuweisen, dass ich in den Konfigurationsansichten 1 und 2 den Wert jedes Auslasses einstelle. Und ich mache App Delegate Anruf viewdidload Methode davor, so dass alle Ausgänge sollten bereits mit Code verbunden, so dass diese Steckdosen sollten nicht Null sein.Warum alle IBOutlet (s) gefunden, wenn viewdidload in App Delegate aufgerufen wird?
An error message in the debugger -- fatal error: unexpectedly found nil while unwrapping an Optional value
import UIKit
class ViewController: UIViewController {
var alive : Bool = true
var aliveDefault = NSUserDefaults.standardUserDefaults()
//IBOulet Connections
@IBOutlet weak var myLine: UILabel!
@IBAction func buttontapped(sender: AnyObject) {
alive = false
NSUserDefaults.standardUserDefaults().setObject(alive, forKey: "alive")
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
loadView()
}
func loadView(){
alive = aliveDefault.boolForKey("alive")
if alive = true {
configureView()
}else{
configureView2()
}
}
func configureView(){
myLine.text = "Random text"
}
func configureView2(){
myLine.text = "Random text 2"
}
}
App Delegierter
func applicationWillEnterForeground(application: UIApplication) {
// Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
ViewController().viewDidLoad()
ViewController().configureView()
}
Warum rufen Sie 'viewDidLoad()' explizit auf? – triandicAnt
diese Ausgänge werden immer noch Null sein, wenn ich nicht explizit ViewDidLoad() aufrufen, also versuche ich andersherum. – Joe
Man soll 'viewDidLoad()' niemals explizit aufrufen: es wird einmal im Lebenszyklus des Controllers automatisch aufgerufen. Versuchen Sie stattdessen '_ = ViewController(). View;' eventuell (aber es wird davon abgeraten). –