以下は、View Controller でアラートを表示するためのコードです。
-(void)saveProducts {
pData = [[JsonModel sharedJsonModel] prodData];
if ([pData count] == 0 && [self respondsToSelector:@selector(alertView:clickedButtonAtIndex:) ] ) {
alert = [[UIAlertView alloc]initWithTitle:@"Alert" message:@"No products against this category" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
}
[self.tblView reloadData];
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex == 0) {
[self.navigationController popViewControllerAnimated:YES];
[actInd stopAnimating];
}
}
ただし、遅いネットワークでは、アラートはゆっくりと届きます。その間にナビゲーション バーの戻るボタンをクリックすると、ナビゲーション コントローラーがポップされ、新しいビュー コントローラーにアラートが表示されます。しかし、[OK] をクリックすると、EXC_BAD_ACCESS エラーでアプリが突然クラッシュします。私も試しました
didDismissWithButtonIndex
の代わりに関数
clickedButtonAtIndex
しかし、同じエラーが発生します。私を助けてください
バックバーボタンをクリックしなければ正常に動作します。最初のView Controllerアラートが2番目のView Controllerに表示された場合にのみ問題が発生します
EDIT これはエラーレポートです * -[ProductsListing alertView:didDismissWithButtonIndex:]: 割り当て解除されたインスタンス 0x8478280 に送信されたメッセージ
編集 私は問題を理解しています。[戻る] ボタンをクリックすると、アラート デリゲートの割り当てが解除され、デリゲートの呼び出し結果がエラーになります。どうすればこれを克服できますか?