在UIView中获取UINavigationController

时间:2011-09-26 00:48:48

标签: iphone ios cocoa-touch

我正在使用的自定义标签栏控制器应用ViewController或UINavigationController,如下所示:UIViewController* viewController = [data objectForKey:@"viewController"];

我不知道它是如何工作的,但“viewController”作为UINavigationController出现。接下来,自定义选项卡栏控制器类添加如此标记viewController.view.tag = THE_TAG;

检索控制器是使用UIView* currentView = [self.window viewWithTag:SELECTED_VIEW_CONTROLLER_TAG];

这部分是我感到困惑的地方,因为现在当我记录这个 “currentView”我得到了一个UILayout等...而不是我的UINavigationController。我假设它将标签应用于包含导航控制器的UIView?

如何在这个UIView中引用UINavigationController?

2 个答案:

答案 0 :(得分:0)

在上面是什么THE_TAG,你能否确认它是唯一的(即不是零,并且不匹配在同一机制的其他地方使用的东西)?

我非常谨慎地使用tag,因为没有简单的方法来保护全球唯一标记,并且当使用self.window viewWithTag之类的内容时,您可以看到正在检查的应用中的每个视图。

答案 1 :(得分:0)

好像你有视图 viewController 混淆了。 UINavigationController是UIViewController的子类。它不是UIView的子类。 UIViewControllers有一个属性是UIView类。当您使用viewWithTag时,可能正在访问此属性:。所以也许,当你使用那个方法时,你不是在访问UINavigationController而是访问UINavigationController的view属性(这实际上是你应该不会搞砸的东西。)