2017-01-10 8 views
0

関数で1に設定したときに整数 "int1"が "viewWillAppear"でnilされないのはなぜですか?関数内で1に設定した後、IntがviewWillAppearでnilになる - Swift

var int1 : Int! 

override func viewWillAppear(_ animated: Bool) { 

    print("viewWillAppear") 
    if int1 != nil { 

     print("int1 != nil") 

    } 
override func viewDidLoad() { 
    super.viewDidLoad() 

    print("viewDidLoad") 

    NotificationCenter.default.addObserver(self, selector: #selector(ViewController.willFinishLaunchingWithOptions), name: NSNotification.Name.UIApplicationDidFinishLaunching, object: nil) 

} 

func willFinishLaunchingWithOptions(notification: NSNotification){ 
    print("Launching!") 
    self.int1 = 1 
} 

コンソールには「Launching!」と表示されます。アプリケーションの起動時にビューが最初に読み込まれるとき、私はint1が無限であることに気付いていますが、別のView Controllerにセグをして戻ると、 "int1!= 1"が出力されることを期待していますが、どうして?

+1

どのように初期ビューコントローラに戻りますか? – dasblinkenlight

答えて

0

viewWillAppear()にブレークポイントを設定して、呼び出されると期待されているときに呼び出されていることを検証し、その値が期待どおりであることを確認しましたか?

@daskblinkenlightのように、通知センターからwillFinishLaunchingWithOptionsに電話していますか?

私は、viewWillAppearの末尾に別の中括弧があるはずです。あなたが期待したときに"viewWillAppear"が印刷されていますか?

+0

はいブレークポイントを設定しようとしましたが、viewWillAppear()が呼び出されました。最後に中括弧を忘れたと言ったように、 "viewWillAppear"が表示されます。私は通常のストーリーボードのsegueを使用してView Controller間を入れ替えます。問題は、別のView Controllerにジャンプして戻るときに、viewWillAppearが呼び出されたときにint1の値が1でないことです。 –

関連する問題