2017-06-10 9 views
0

だからコミュニティは学校のプロジェクトと共に私を助けてくれました。しかし、私は悩んだ。私は簡単なキッチンタイマーappを構築しています。これはSVCとタブビューです。最初のページではユーザーがタイマーを設定できるようになり、次に2番目のページでは割り当ての要件を満たすために作成したランダムな背景色をユーザーがトリガーできる基本設定ページが表示されます。すべてが1つの部分について素晴らしい発言をしています。ユーザーが背景として使用するランダムな色をトリガーすると、その背景色を他のビューにも適用したかったのです。私はここで探したアドバイス、すなわちChange viewController BG color based off another view controllerに行き、シングルトンを使いました。しかし、設定ビューからタイマービューにナビゲートすると何も起こりません。今、私はそうのように私のviewDidLoad()self.view.backgroundColor = Settings.sharedInstance.backgroundColorを追加しました:ViewDidLoad()はバックグラウンドリフレッシュを起動しません

`override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    self.view.backgroundColor = Settings.sharedInstance.backgroundColor 
    print(Settings.sharedInstance.backgroundColor) 
} 

` 何が起こるように思いません。しかしながら!テストとして、同じブロックを次の場所に追加しました:

@IBAction func pickerStartButtonChnage(_ sender: UIButton) { 

    self.view.backgroundColor = Settings.sharedInstance.backgroundColor 
    print(Settings.sharedInstance.backgroundColor) 

    if !cron.isValid{ // prevent more than one time on the thread 
     nameIt.text = cronStr(cronCount) 
     cron = Timer.scheduledTimer(timeInterval: timeInterval, 
           target: self, 
           selector: #selector(TimerViewController.timerDidEnd(_:)), 
           userInfo: "is done!", 
           repeats: true) //repeating timer in the second iteration 
    } 
} 

私の質問は、なぜボタンがトリガーされたときにうまく動作する場合、viewDidLoad()で背景がトリガーされていないのですか?事前にアドバイスをいただきありがとうございます。

答えて

0

代わりにviewWillAppear()の色を変更してください。 viewDidLoad()は、ビューが最初にメモリにロードされたときに表示されますが、表示されるたびにviewWillAppear()が呼び出されます。

override func viewWillAppear() { 
    super.viewWillAppear() 
    self.view.backgroundColor = Settings.sharedInstance.backgroundColor 
} 
+1

あなたは男です!私だけでなく、私のグレードもありがとう。 – aboodness

関連する問題