【问题标题】:viewDidAppear, but where is viewDidShowToUser?viewDidAppear,但是 viewDidShowToUser 在哪里?
【发布时间】:2010-08-10 15:34:32
【问题描述】:

我有一个在我的 ViewController 中运行此功能的 iphone3g

- (void)viewDidAppear:(BOOL)animated {

[super viewDidLoad];

}

我使用 TabBar iphone 应用程序。但是当我从选项卡 1 到选项卡 2 并调试 secondView 控制器时,它会在视图实际位于用户视图中之前停止。

因此,当您单击选项卡 2 直到内部的每个函数 - (void)viewDidAppear:(BOOL)animated 完成时,用户才能看到视图。

ViewDidShowToUser 函数在哪里?现在我有一些函数正在运行,所以有时速度很慢,而且你认为按钮真的不起作用..

【问题讨论】:

    标签: iphone xcode ios-simulator viewdidappear


    【解决方案1】:

    首先,您在-viewDidAppear: 的实现中调用[super viewDidLoad] 而不是[super viewDidAppear:animated]

    其次,使用调试器和断点可以人为地查看应用的行为方式。在实际使用中,用户不会注意到 -viewDidAppear: 方法在实际显示视图之前返回。

    真正的问题是您的工作需要很长时间才能完成,这会使应用程序显得迟钝。您应该考虑异步执行工作,并且您有几个选项可以做到这一点。

    1. 在您的viewDidAppear: 实现中,您可以使用performSelector:withObject:afterDelay: 来排队工作。此方法将立即返回并安排您的选择器在您指定的任何时间段内被调用。如果您将 0 作为延迟传递,它将在运行循环的下一次迭代中排队运行,从而有效地为您提供一种从方法返回并保持用户界面响应的方式。

    2. 如果您不针对低于 iOS4 的任何内容,您可以使用块,并利用 Grand Central Dispatch 的强大功能来安全地完成您的工作。

    【讨论】:

      【解决方案2】:

      您在 viewDidLoad: 内部调用 super: ....将行 [super viewDidLoad]; 更改为 [super viewDidAppear:animated];

      【讨论】:

      • 谢谢大家。没错,但问题也在 IB 内部。 Couse:当我调试我的应用程序时。它在 cellForRowAtIndexPath 之后首先触发 ViewDidLoad ...。我认为文件所有者的原因是 ViewController 并添加了委托和数据源的协议。在我的另一个应用程序中,viewDidload 是在 cellForRowAtIndex 路径之后触发的,因为我的另一个应用程序是 TableViewController ......但是此时我的视图更复杂,所以我在视图中使用了一个小 tableView ..好的,我会尝试选项 2。谢谢
      【解决方案3】:

      没有简单的方法来判断。

      UIKit 制作 UIView。 UIViews 绘制到 CALayers。 CALayers 由 CoreAnimation 处理。

      CoreAnimation 决定何时要求 UIView 绘制图层。它在屏幕上绘制所有图层,然后在 GPU 上合成它们。只有在它们合成后,屏幕才会显示更新的 UI。这种解耦是为了让 CoreAnimation 能够独立于 UI 线程完成大部分工作,但这意味着您无法轻易分辨出“实际在屏幕上”的内容。

      没有简单的方法可以判断屏幕何时实际显示了某些内容(除了现在私有的 UIGetScreenImage())。 viewDidAppear:在 UIKit 完成构建(和动画)视图/层之后被调用。此时,CoreAnimation 将在下一次运行循环后“看到”它们,并在此后不久显示。如果您在 viewDidAppear: 中进行大量处理,那么 CoreAnimation 将永远不会看到更新后的“模型树”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-05
        • 2011-11-14
        • 2013-02-11
        • 1970-01-01
        • 1970-01-01
        • 2014-10-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多