iPhone:NSLog self.window.rootviewcontroller

Posted

技术标签:

【中文标题】iPhone:NSLog self.window.rootviewcontroller【英文标题】:iPhone: NSLog self.window.rootviewcontroller 【发布时间】:2012-12-12 13:38:34 【问题描述】:

我需要知道我的 winow.rootviewcontroller 名称。

例如

    UITabBarController *demoTabBarController = [[UITabBarController alloc] init];
    [self.demoTabBarController setDelegate:self];
    self.demoTabBarController.viewControllers = [NSArray arrayWithObjects:mainNavController, searchView, challengeView, nil];
    self.window.rootViewController = self.demoTabBarController;

所以在 NSLog 中我想要 demoTabBarController 作为结果。有什么方法可以实现吗?

请注意,我不想要 rootviewcontroller 的类名。

【问题讨论】:

【参考方案1】:

不直接。指针变量不保存有关其他指针变量为其提供对象引用的任何信息。如果您需要某种关于对象历史的标识信息,则必须将 UITabBarController 子类化并保存您想要在自定义类中显示的内容。

(如果你描述了为什么你认为这很有用,那么有人可能有另一种方法来解决更基本的问题。)

【讨论】:

好的。所以基本上我的项目中有 3 个部分,每个部分都有不同的专用 tabBarController,即 A、B 和 C。A 有 5 个视图 A1、A2、A3、A4、A5。 B 拥有三个视图 B1、B2、B3。 C 有 4 个视图 C1、C2、C3、C4。根据 tabBarController 起作用的部分的选择。而且我还想从新的 tabBarController 导航到上一个 tabBarController。有什么办法可以做到这一点。请帮帮我。 唯一想到的是保留 3 个包含对 A、B 和 C 的引用的属性。然后您可以将根控制器的当前地址与每个地址进行比较并记录您想要的任何内容在比较上。这就是您在原始问题中所要求的……只是不那么自动。 是的,没错。非常感谢如此积极的回应。感谢您的帮助,先生。【参考方案2】:

demoTabBarController 只是指向您的 UITabBarController 的指针的名称。它实际上并没有存储在内存中。

您可以使用 [self.window.rootViewController className] 获取类名,但这应该返回 UITabBarController

【讨论】:

感谢您的快速回答。但不幸的是,正如我在问题中提到的那样,我不需要那个类名。

以上是关于iPhone:NSLog self.window.rootviewcontroller的主要内容,如果未能解决你的问题,请参考以下文章

如何从 iphone .app 文件中查看 NSLog 语句

NSLog 在 iphone 模拟器上运行时输出到控制台,但在设备上运行时不输出

如何从占用 USB 的 iOS 设备调试或查看 NSLog 输出?

ios nslog怎么打印中文

UIScrollView 滚动可见,但 NSLog 显示它不是 [关闭]

Interface builder和iphone sdk