0

我存储数据的方法位于 AppDelegate 中。每当数据保存到数据库中时,我都想检查 SecondView 是否可见。
如果是,则从数据库重新加载屏幕上的值。如果没有,我将在屏幕上显示具有最新值的视图。

我正在尝试这样的事情:

委托人.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");
  }

第二视图控制器.m

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

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

它不能正常工作, isVisible never return 是可见的,并且 updateDisplayValue 不会更新已经显示的视图。

我认为问题在于我重新启动了一个名为 SecondVC 的新视图,它不是屏幕上显示的视图。但是 AppDelegate 如何获取当前的显示视图呢?

请帮忙!非常感谢!

4

1 回答 1

0

在您检查 SecondVC.isVisible 时,它​​是不可见的,因为您刚刚创建了它,并且它的视图尚未加载。我不确定如何纠正它——这取决于你的控制器结构。是应用程序委托中的第一段代码吗?

于 2013-03-29T01:46:14.340 回答