有没有办法在Swift中查看View Controller Stack?

时间:2014-11-20 15:10:05

标签: swift uiviewcontroller stack

有没有在Swift中查看View Controller Stack?

希望我可以阅读某种数组或println()

2 个答案:

答案 0 :(得分:1)

您需要滚动一些代码来遍历对象图,但这是一个开始。

  1. 首先,您需要UIApplication's keyWindow属性中的关键窗口。
  2. 接下来通过UIWindow's rootViewController属性获取根视图控制器。
  3. 最后,递归检查生成的UIViewController childViewControllers数组的内容。包含的视图控制器可能具有自己的子视图控制器。
  4. 从第一个childViewControllers属性转储视图控制器可能会像这样工作(这是我的头脑中未经测试):

    func dumpViewControllers(controllers:[AnyObject], level:UInt = 0)
    {
        if controllers.count == 0 { return }
    
        for controller in controllers as [UIViewController]
        {
            for var i = 0; i < level; i++ { print '>' };
            println(" " + toString(controller));
    
            dumpViewControllers(controller.childViewControllers, level:level + 1);
        }
    }
    

答案 1 :(得分:0)

它不漂亮,但它应该做的伎俩;) 只需在rootViewController上调用recursiveViewControllersDescription()以获取带有viewControllers层次结构的字符串

extension UIViewController {
  func recursiveViewControllersDescription() -> String {
    return recursiveChildViewControllersLevel(0)
  }

  func recursiveChildViewControllersLevel(level: Int) -> String {
    var string = String()
    for var i = 0; i < level; i++ {
      string += "\t"
    }
    string += self.description
    string += "\n"
    for viewController in self.childViewControllers as [UIViewController] {
      string += viewController.recursiveChildViewControllersLevel(level + 1)
    }
    return string
  }
}