【问题标题】:check if the view is loaded at run time检查视图是否在运行时加载
【发布时间】:2012-04-17 16:20:47
【问题描述】:

有什么方法可以让我在不检查视图控制器的源代码的情况下看到加载的视图(例如,viewDidLoad、viewWillAppear 等)

或者如何在运行时/动态检查是否加载了任何视图以获取子视图。

【问题讨论】:

  • 例如,我想等到我的视图加载完毕,然后获取该视图的所有子视图,并通过拥有这些 UIView 的属性和信息,使用 KIF 步骤和场景之类的东西开始对它们进行测试。我想等到视图被加载,但是我怎样才能获得 UIViews 的属性,因为我不想只使用可访问性标签
  • 加载我的意思是当我们可以获得视图的所有子视图时。我需要从另一个库文件中获取此信息,而不是在项目源代码中。

标签: iphone objective-c ios view


【解决方案1】:

如果你有一个视图控制器的实例,你可以问它:

viewController.isViewLoaded

【讨论】:

  • 那么我应该在哪里检查并检查 isViewLoaded。因此首先调用 applicationDidFinishLaunching,然后调用第一个视图的 viewdidload。我在哪里可以查看 isViewLoaded
【解决方案2】:

我不完全清楚您所说的“已加载”是什么意思。根据您对“加载”的定义,您可以:

  • 检查视图是否为nil(已加载的最广泛定义,尽管这将取决于在视图被释放时是否会取消视图,以免出现 EXC_BAD_ACCESS)。

  • 查看[view superview]查看视图是否有超级视图。

  • 检查[view window] 以查看视图是否是窗口的一部分(“在屏幕上”的先决条件)

  • 假设有一个对应的UIViewController,查询控制器的isViewLoaded属性看它是否已经将视图加载到内存中。这尤其有助于查看生命周期问题。

对于“已加载”可能还有其他解释以及您可以检查的其他内容,但这些是我想到的第一件事。

【讨论】:

    【解决方案3】:

    不太确定您的用例,但如果您只想查询视图层次结构,这可能会有所帮助。

    - (UIView *)viewWithTag:(NSInteger)tag
    
    1. 标记您感兴趣的所有视图,例如。标记某些感兴趣的观点; "ImportantView1", "ImportantView2", ...

    2. 您需要一个(父)视图来进行上述 API 调用

    3. 调用查询(父)视图和所有子视图。

    4. 按您的自定义标签名称过滤视图。 (如果标签以“ImportantView”开头)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-23
      • 1970-01-01
      • 2015-07-11
      • 1970-01-01
      相关资源
      最近更新 更多