0

私のデータ保存方法は AppDelegate にあります。データがデータベースに保存されるたびに、SecondView isVisible かどうかを確認したいと思います。
そうである場合は、画面上の値をデータベースから再読み込みします。そうでない場合は、画面に最新の値でビューを表示します。

私はこのようなことを試みています:

デリゲート.m

    //  I want to update view
  UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
  SecondViewController *SecondVC = (SecondViewController *)[storyboard instantiateViewControllerWithIdentifier:@"SecondVC"];
  if (SecondVC.isVisible)
  {
    NSLog(@"SecondVC is visible");
    [SecondVC updateDisplayValue];

  }
  else
  {
    self.window.rootViewController = SecondVC;
    NSLog(@"SecondVC not visible");
  }

SecondViewController.m

  - (BOOL)isVisible {
    return [self isViewLoaded] && self.view.window;
  }

- (void)updateDisplayValue
{
  [self LatestMeasurementFromSQLite];
  [self.date setText:self.measurementTime];
}

isVisible が表示されることはなく、updateDisplayValue は既に表示されているビューを更新しません。

問題は、画面に表示されていない SecondVC という新しいビューを再度開始したことだと思います。しかし、AppDelegate はどのようにして現在の表示ビューを取得できるのでしょうか?

助けてください!どうもありがとう!

4

1 に答える 1

0

SecondVC.isVisible を確認した時点では、作成したばかりでビューがまだ読み込まれていないため、表示されません。修正方法がわかりません。コントローラーの構造によって異なります。アプリ デリゲートの最初のコードですか?

于 2013-03-29T01:46:14.340 に答える