マップベースのアプリで奇妙な動作に直面しています。いくつかのルートサービスを使用してルートを表示するためにいくつかのデータをフェッチしています。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のライフサイクルに何か問題があるのではないかと思います。戻るボタンを押すとどうなりますか。明らかに、ViewControllerは破棄されませんが、再入力すると新しいものが作成されます。RootViewControllerから、ターゲットView Controllerのインスタンスが存在するかどうかを判断し、それを使用してSegueを実行することは可能ですか?
とにかく、これが私の問題に関するものかどうかはわかりません。
アイデアをありがとう