我正在使用的自定义标签栏控制器应用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?
答案 0 :(得分:0)
在上面是什么THE_TAG
,你能否确认它是唯一的(即不是零,并且不匹配在同一机制的其他地方使用的东西)?
我非常谨慎地使用tag
,因为没有简单的方法来保护全球唯一标记,并且当使用self.window viewWithTag
之类的内容时,您可以看到正在检查的应用中的每个视图。
答案 1 :(得分:0)
好像你有视图和 viewController 混淆了。 UINavigationController是UIViewController的子类。它不是UIView的子类。 UIViewControllers有一个属性是UIView类。当您使用viewWithTag时,可能正在访问此属性:。所以也许,当你使用那个方法时,你不是在访问UINavigationController而是访问UINavigationController的view属性(这实际上是你应该不会搞砸的东西。)