После закрытия viewController popViewController не будет работать
Я застрял в сценарии: посмотрите на эту картину:
У меня есть soundPlayerVC в качестве childeViewController из pageContentVC.
soundPlayerVC Настоящая почта modalViewController:
- (IBAction)emailStory:(id)sender {
if ([MFMailComposeViewController canSendMail]) {
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate = self;
Anecdote *anecdote = (Anecdote *)story;
[picker setSubject:anecdote.name];
[picker setMessageBody:[SearchHandler removeMarkupsFromPageText:anecdote.detail] isHTML:NO];
[self.parentViewController presentViewController:picker animated:YES completion:nil];
}
#pragma mark - mail compose delegates
-(void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
[controller dismissViewControllerAnimated:YES completion:nil];
}
но когда я нажимаю на backButton, popViewController не работает, потому что navigationController был очищен!!
КАК ЭТО ПРОИЗОШЛО? может кто-нибудь объяснить?
1 ответ
Я нашел решение: это было из-за того, что я не выполнил popViewController в правильном viewController.
pageContentVC
это ребенок bookRootVC
так bookRootVC
отвечает за удаление pageContnetVC
из стека навигации контроллера.
Я создал протокол и добавил свойство делегата pageContnetVC
и назначен bookRootVC
в качестве делегата pageContnetVC
protocol DismissViewControllerDelegate <NSObject>
- (void)popViewController;
@end
bookRootVC
реализовать протокол:
#pragma mark pop view controller delegate
- (void)popViewController
{
[self.navigationController popViewControllerAnimated:YES];
}
в viewDidLoad
self.pageViewController.delegate = self;
и, наконец, кнопка назад в pageContentVC
вызовите его делегат, чтобы удалить это представление из navigationController.
это все!