【问题标题】:how to find current loaded viewcontroller?如何找到当前加载的视图控制器?
【发布时间】:2012-01-04 12:40:02
【问题描述】:

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

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 是否已加载(当前显示的视图)?

【问题讨论】:

    标签: uiviewcontroller uitabbarcontroller detailview


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-01-03
      • 1970-01-01
      • 2012-11-07
      • 2013-03-06
      • 1970-01-01
      • 2015-07-23
      • 2019-07-03
      • 2015-11-17
      • 2019-05-30
      相关资源
      最近更新 更多