我在基于地图的应用程序中遇到了一些奇怪的行为。我正在获取一些数据以使用一些路线服务显示路线。它使用 GCD 在后台线程中运行。获取数据后,我返回主线程以更新 UI:
dispatch_async(dispatch_get_main_queue(), ^{
[self.mapProvider addToExistingPolyLinePoints:coordinates withTitle:@"line" removeOldOne:NO useCurrentIndex:NO];
[_distanceLabel setText:[NSString stringWithFormat:@"%.2lf km",[self.draggingLogic getOverallDistance]]];
[self.progress setHidden:YES];
});
这一切都在我的 RouteViewController 中运行良好。但是,如果我使用后退按钮返回 RootViewController 并重新进入 RouteViewController 并重新获取整个内容,则不会对 UI 进行评估。它显示的行为与未在主线程中完成 UI 更新相同。数据到达正确。
我想知道这是否是关于 iOS 的视图控制器生命周期的某种问题,我没有完全理解。当我按下返回按钮时会发生什么。显然 ViewController 没有被破坏,但如果我重新输入它会创建一个新的。是否可以从 RootViewController 确定目标视图控制器的实例是否存在并使用它执行 Segue?
无论如何,我不确定这是否与我的问题有关。
感谢您的任何想法