jan*_*way 2 iphone uikit uinavigationcontroller ios
我一直在寻找解决我的问题的方法但到目前为止还没找到任何东西.
我有一个带有UIViewControllers堆栈的UINavigationController(如果相关的话,这都在TabbarController中).在最后一个ViewController,我想发送一封电子邮件:
MFMailComposeViewController *emailVC = [[MFMailComposeViewController alloc] init];
// fill out emailVC properties ...
[self presentModalViewController:emailVC animated:YES];
Run Code Online (Sandbox Code Playgroud)
然后在发送电子邮件后的委托中,我想关闭电子邮件viewcontroller并弹出NavigationController堆栈中的最后一个viewcontroller:
-(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
Run Code Online (Sandbox Code Playgroud)
但是,最后一行导致某处崩溃.我之前和之后检查过ViewController堆栈.最后一个viewController正确地从列表中删除.
欢迎任何想法或建议.问题可能在我的代码中的其他地方,我想确保我有这个部分.谢谢.
尝试启动播放延迟
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];
}
Run Code Online (Sandbox Code Playgroud)
您可能希望微调延迟.
iOS 5及更高版本解决方案
-(void)mailComposeController:(MFMailComposeViewController *)controller
didFinishWithResult:(MFMailComposeResult)result
error:(NSError *)error
{
[...]
[self dismissViewControllerAnimated:YES completion:^
{
[self.navigationController popViewControllerAnimated:NO];
}];
[...]
}
Run Code Online (Sandbox Code Playgroud)
虽然这看起来有点像hackish,但它应该有效.
| 归档时间: |
|
| 查看次数: |
3198 次 |
| 最近记录: |