0

私はシナリオに行き詰まっています: この写真を見てください: ここに画像の説明を入力

pageContentVCのchildeViewControllerとしてsoundPlayerVCがあります。

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 をタップすると、navigationController が空になっているため、popViewController が機能しません!!

これはどのように起こったのですか?誰かが説明できますか?

4

1 に答える 1

1

私は解決策を見つけました:それは私が正しいviewControllerにpopViewControllerをしなかったためです。

pageContentVCの子なbookRootVCので、navigationController スタックからbookRootVC削除する責任があります。pageContnetVC

プロトコルを作成し、デリゲート プロパティを追加して、のデリゲートとしてpageContnetVC割り当てましたbookRootVCpageContnetVC

protocol DismissViewControllerDelegate <NSObject>
- (void)popViewController;
@end

bookRootVCプロトコルを実装します。

#pragma mark pop view controller delegate
- (void)popViewController
{
    [self.navigationController popViewControllerAnimated:YES];
}

viewDidLoad

 self.pageViewController.delegate = self;

最後に、デリゲートを呼び出して backButton をpageContentVC呼び出し、navigationController からこのビューを削除します。

それで全部です!

于 2014-01-06T19:38:13.600 に答える