gpt4 book ai didi

iphone - dismissModalViewController 然后 popViewController

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:33:14 24 4
gpt4 key购买 nike

我一直在寻找解决我的问题的方法,但到目前为止还没有找到任何东西。

我有一个带有一堆 UIViewController 的 UINavigationController(如果相关的话,这都在 TabbarController 中)。在最后一个 ViewController 中,我想发送一封电子邮件:

MFMailComposeViewController *emailVC = [[MFMailComposeViewController alloc] init];
// fill out emailVC properties ...
[self presentModalViewController:emailVC animated:YES];

然后在发送电子邮件后的委托(delegate)中,我想关闭电子邮件 View Controller 并弹出 NavigationController 堆栈中的最后一个 View Controller :

-(void)mailComposeController:(MFMailComposeViewController *)controller
didFinishWithResult:(MFMailComposeResult)result
error:(NSError *)error
{
// save some variables here ...
[self dismissModalViewControllerAnimated:YES]; // This line works by itself
[self.navigationController popViewControllerAnimated:NO]; // this line causes EXC_BAD_ACCESS

但是,最后一行导致某处崩溃。我检查了之前和之后的 ViewController 堆栈。最后一个 viewController 正确地从列表中删除。

欢迎提出任何想法或建议。问题可能出在我的代码中的其他地方,我想确保这部分没问题。谢谢。

最佳答案

尝试延迟启动pop

iOS 3 及更高版本的解决方案

-(void)mailComposeController:(MFMailComposeViewController *)controller
didFinishWithResult:(MFMailComposeResult)result
error:(NSError *)error
{
[...]
[self dismissModalViewControllerAnimated:YES];
[self performSelector:@selector(doThePop) withObject:nil afterDelay:0.40];
[...]
}

- (void)doThePop
{
[self.navigationController popViewControllerAnimated:NO];
}

您可能想要微调延迟。

iOS 5 及更高版本的解决方案

-(void)mailComposeController:(MFMailComposeViewController *)controller
didFinishWithResult:(MFMailComposeResult)result
error:(NSError *)error
{
[...]
[self dismissViewControllerAnimated:YES completion:^
{
[self.navigationController popViewControllerAnimated:NO];
}];
[...]
}

尽管这看起来有点老套,但它应该可以工作。

关于iphone - dismissModalViewController 然后 popViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8901702/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com