如何找到当前加载的viewcontroller?

时间:2012-01-04 12:40:03

标签: uiviewcontroller uitabbarcontroller detailview

我有一个带有2个tabBarItems的tabBarController应用程序。 每个viewControllers都包含tableView 在didSelectRowAtIndexPath上,我使用以下代码行加载detailview:

detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController_iPad" bundle:[NSBundle mainBundle]];

detailViewController.selectedDetail = [selectedDetail valueForKey:@"cardText"];
detailViewController.selectedCardTitle2 = [selectedCardTitle valueForKey:@"cardTitle"];
detailViewController.selectedRow2 = [self.tableViewInbox indexPathForSelectedRow];
detailViewController.detailCardsArray = allCards;
detailViewController.detailAllFetchedCards = allFetchedCards;

detailViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[inboxViewController presentModalViewController:detailViewController animated:YES];

问题是,当加载detailView(是实际显示的viewController)并且我更改为另一个tabBarItem时,detailView 不会解除。这意味着,如果调用didSelectRowAtIndexPath,我无法再次加载detailView。

在我的AppDelegate中,我有方法

- (void)tabBarController:(UITabBarController *)tabBarController  didSelectViewController:(UIViewController *)viewController {  

在这个方法中,如果detailView是实际显示的viewController,我将检查 如果是,并且tabBarItem发生了变化,则关闭DetailView。

现在我的问题是:如果加载了detailView(当前显示的视图),我如何检查?

1 个答案:

答案 0 :(得分:1)

documentation告诉我们detailView成为呈现视图的子项。呈现视图控制器将更新它的modalViewController属性以指向所呈现的视图。此外,模式视图的parentViewController将更新为指向展示视图。

因此,您可以检查这些属性以查看是否显示模态视图。