読者です 読者をやめる 読者になる 読者になる

ViewController でナビゲーションバーの戻るボタンがタップされたかどうか判定する方法

objective-c ios

viewWillDisappear の中で、ナビゲーションコントローラーの管理下に自分自身が含まれているかチェックし、含まれていなければ戻るボタンがタップされたと判断できた。

- (void)viewWillDisappear:(BOOL)animated
{
    if ([self.navigationController.viewControllers indexOfObject:self] == NSNotFound)
    {
        // 戻るボタンがタップされたとき通信をキャンセルする
        MyHTTPClient *client = [MyHTTPClient sharedClient];
        [client.operationQueue cancelAllOperations];
    }
    [super viewWillDisappear:animated];
}

通信中に戻るボタンをタップされたとき、通信をキャンセルしないとエラーが発生してしまう。しょっちゅう使いそうなのでブログにメモ、っと。