【问题标题】:Is there any way of viewing the View Controller Stack in Swift?有什么方法可以在 Swift 中查看 View Controller Stack?
【发布时间】:2014-11-20 15:10:05
【问题描述】:

是否有在 Swift 中查看 View Controller Stack 的方法?

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

【问题讨论】:

    标签: swift uiviewcontroller stack


    【解决方案1】:

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

    1. 首先您需要来自UIApplication's keyWindow 属性的密钥窗口。
    2. 接下来通过UIWindow'srootViewController属性获取根视图控制器。
    3. 最后,递归检查生成的UIViewControllerchildViewControllers 数组的内容。包含的视图控制器可能有自己的子视图控制器。

    从第一个 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);
        }
    }
    

    【讨论】:

      【解决方案2】:

      它不漂亮,但它应该可以解决问题;) 只需在您的 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
        }
      }
      

      【讨论】:

        猜你喜欢
        • 2011-04-12
        • 1970-01-01
        • 2019-07-04
        • 2019-08-19
        • 2018-12-22
        • 1970-01-01
        • 2011-01-20
        • 2014-07-23
        • 1970-01-01
        相关资源
        最近更新 更多