У меня есть навигационное приложение с несколькими представлениями. Когда я доберусь до последнего представления, приложение отправит электронное письмо (используя MailComposer). После этого хотелось бы вернуться к исходному виду.
Все работает нормально, но когда я пытаюсь вернуться на домашний экран, используя: [self.navigationController popToRootViewControllerAnimated: YES]; Приложение вылетит и выдаст ошибку «EXC_BAD_ACCESS». Я знаю, что могу отладить это с помощью NSZombie, но когда я пытаюсь получить ошибку в NSZombie, ошибка не появляется.
Как я могу это исправить? Или есть способ просто освободить все представления и перезагрузить первое представление? Любые советы или что-то еще, чтобы помочь мне, было бы здорово. Вот код:
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{
// Notifies users about errors associated with the interface
switch (result)
{
UIAlertView *alert;
case MFMailComposeResultCancelled:
NSLog(@"melding cancelled");
alert = [[UIAlertView alloc]initWithTitle:@"Email afgebroken" message:nil delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
[alert show];
[alert release];
break;
case MFMailComposeResultSaved:
NSLog(@"melding opgeslagen");
alert = [[UIAlertView alloc]initWithTitle:@"Email opgeslagen" message:nil delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
[alert show];
[alert release];
break;
case MFMailComposeResultSent:
NSLog(@"melding verzonden");
alert = [[UIAlertView alloc]initWithTitle:@"Email verzonden" message:nil delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
[alert show];
[alert release];
[self saveMelding];
break;
case MFMailComposeResultFailed:
NSLog(@"melding failed");
alert = [[UIAlertView alloc]initWithTitle:@"Email mislukt te versturen" message:@"probeer het later nog eens" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
[alert show];
[alert release];
break;
default:
NSLog(@"melding niet verzonden");
alert = [[UIAlertView alloc]initWithTitle:@"Email niet verzonden" message:nil delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
[alert show];
[alert release];
break;
}
[self dismissModalViewControllerAnimated:YES];
}
- (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
if (buttonIndex == 0)
{
NSLog(@"ok");
[self.navigationController popToRootViewControllerAnimated:YES];
}
}