Mail TabBarItem dismissModalViewControllerAnimated

时间:2012-04-15 00:21:11

标签: objective-c uiviewcontroller uitabbarcontroller uitabbaritem

我正在动态添加TabBarItem(电子邮件)。当我完成我的电子邮件时,我正在调用'dismissModalViewControllerAnimated'但它只是解雇邮件视图。如何卸载视图控制器?

在我的电子邮件视图控制器中,我正在执行以下操作:

- (void)viewDidLoad => I would like to unload this view controller
{
    [super viewDidLoad];
    [self showEMail:nil]; => this display and dismisses email (I'm not calling present.. and dismiss... in a row. I'm using delegate methods to present and dismiss, which is fine.)
                              [self presentModalViewController:picker animated:YES];
                              [self dismissModalViewControllerAnimated:YES];

}

选择我的标签栏项目后,它正在加载视图控制器(让我们说'ABC视图控制器'),它正在呈现我的邮件模态控制器。邮件模态控制器正在被正确解雇。但是我想在卸载'ABC视图控制器'后回到之前选择的标签项。可能吗?或者我在这里做错了什么?

提前致谢

拉​​马

2 个答案:

答案 0 :(得分:0)

拉玛,你的问题很难理解。也许您需要为您正在呈现的视图控制器使用委托。

在你的代码中,连续调用[self presentModalViewController ...]和[self dismissModalViewController ...]是没有意义的。

你应该首先调用[self presentModalViewController ...],将呈现视图控制器作为委托(例如picker.delegate = self)

让模态视图控制器执行其业务,包括退出(如用户命中取消,关闭或其他),然后调用委托方法(类似[delegate didFinish ...]或[delegate didCancel ...]

现在它是呈现视图控制器的响应委托方法调用,你可以在这里解雇模态视图控制器

注意:许多UIKit类都练习这种模式,例如UIAlertView,UIActionSheetView,MPMoviePlayerViewController等。你应该检查它们并制作你自己的

答案 1 :(得分:0)

我通过使用ViewWiilAppear方法显示邮件模态演示者来解决问题。

我在解雇邮件模态演示者后选择了标签栏控制器的索引。

self.tabBarController.selectedIndex = 0;

这解决了我的问题。

干杯