Iphone 迭代';主动';视图控制器

Iphone 迭代';主动';视图控制器,iphone,uiviewcontroller,subview,Iphone,Uiviewcontroller,Subview,各位 在iPhone应用程序中,我使用addSubView:SomeViewController.view方法显示不同的视图 我希望至少能够记录正在显示的视图层次结构中的视图控制器。我更希望能够获得特定视图控制器的句柄 我知道如何迭代视图,只是看不到如何访问这些视图的视图控制器。我正在寻找一些可以让我像UINavigationController::ViewControllers那样访问视图控制器的东西 我想我可以逃脱: for (UIViewController* oVC in [self.v

各位

在iPhone应用程序中,我使用addSubView:SomeViewController.view方法显示不同的视图

我希望至少能够记录正在显示的视图层次结构中的视图控制器。我更希望能够获得特定视图控制器的句柄

我知道如何迭代视图,只是看不到如何访问这些视图的视图控制器。我正在寻找一些可以让我像UINavigationController::ViewControllers那样访问视图控制器的东西

我想我可以逃脱:

for (UIViewController* oVC in [self.view subviews])
但这并没有达到预期效果

如果有人有这样做的方法,请与我分享


-isdi-

视图不保留对其视图控制器的引用(或对视图控制器的一般了解),因此您必须自己跟踪该映射。如果将所有视图控制器保留在一个数组中,则可以执行以下操作:

- (UIViewController *) viewControllerForView:(UIView *)view {
    for (UIViewController *viewController in viewControllers)
        if (viewController.view == view)
            return viewController;
    return nil;
}

视图与拥有它的视图控制器交互的标准方式是将视图控制器设置为视图的委托或操作目标。视图设计为不包含有关委托或操作目标的任何详细信息

如果已经实现了自己的视图,只需添加一个成员来保存对视图控制器的引用。或者为视图采用委托模型,这样就不管委托是什么类


如果将视图视为一个堆栈,并希望在其旁边维护一个视图控制器堆栈(类似于UINavigationController为您所做的),则必须手动执行此操作。将addSubview:viewController.view的每次调用与[myViewControllerArray addObject:viewController]的调用耦合起来,并在视图从视图层次结构中移除时从数组中移除viewController。

就有用性而言,我想知道在一系列addSubview调用之后堆栈上有哪些viewController。在这种情况下,我希望访问位于其他四个视图控制器下方的特定视图控制器。我会很高兴地告诉那个在我发布后不到两分钟就把问题降级的人。该死。在尝试了半天不同的方法后,我希望情况并非如此。谢谢你的回答,我将在RootViewController中实现某种跟踪机制。我喜欢这个主意。塔克斯。如果我能给你点什么的话,我会的。