解決策の1つは、非同期呼び出しを、好ましくはView2Controller
またはそれ以上の所有者が所有するクラスに移動することです。 View3Controller
を押すと、この新しいクラスを渡すだけで、ユーザーが後ろをナビゲートすると、必要に応じて続行されます。
のようなオブジェクトを想像:
AsyncObject : NSObject {}
@property (nonatomic, assign) id delegate;
- (void)start;
、ユーザーがあなたを戻って移動した場合
View3Controller
内
self.asyncObject.delegate = self;
[self.asyncObject start];
から非同期操作を可能性が開始するときView3Controller
View3Controller *view3Controller = ...
view3Controller.asyncObject = self.asyncObject;
[self.navigationController pushView....];
を押し、潜在的にこのようなことをするnavigationController:willShowViewController:animated:
in View3Controller
がポップされる場合は、asyncObject
からコールバックを取得します。
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
if (viewController == self) {
self.asyncObject.delegate = self;
}
}
あなたは(キーの値が観測)の代わりに、デリゲートを使用して、あなたが通知またはKVOをご覧ください同時に複数のオブジェクトに対してasyncObject
からイベントを受信できるようにする必要がある場合。
ユーザーがネットワーク操作を完了しないようにするには、ユーザーがビューから離れていることが示されます。なぜそれを完了したいのですか?私がそのビューに戻ったときに別の接続を開始できませんか? –