【问题标题】:Update UIProgressView from background从后台更新 UIProgressView
【发布时间】:2011-08-10 07:37:22
【问题描述】:

我有一个带有三个标签的标签栏应用程序。在我的第二个标签视图中,我有一个UIProgressView。我的viewDidLoad 方法中有一个NSTimer,它调用了一个更新progressView 的方法

progressTimer = [NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector:@selector(updateProgress) userInfo:nil repeats:YES];

到目前为止一切都很好。

我想知道如何在应用程序的整个生命周期中在后台运行计时器,以便progressView 无论用户在哪个视图中都会更新。如果你能告诉我代码sn-p。

提前致谢。

【问题讨论】:

    标签: iphone objective-c xcode uiprogressview


    【解决方案1】:

    不建议从后台线程更新 UI 元素。此外,当用户不在该视图中时,不建议修改该视图的 UI 元素。您正在使用宝贵的系统资源。

    更好的方法是在视图变为活动状态后立即更新 ProgressBar...

    更新:您可以查看here 以了解如何在后台线程中运行任务。您可以设置您的 NSTimer 以从您在那里指定的选择器开始。但同样,这种东西可能会导致一些奇怪的错误。最好避免..

    【讨论】:

    • 谢谢。但我只是想在这里模拟一个概念。这只是一个演示,不会将应用提交到应用商店。
    • 作为此答案的补充:在 viewWillAppear 中设置您的计时器并在您的 viewController 的 viewWillDisappear 方法中停止/释放它。 NSTimer 保留它的委托,如果你不这样做,你的 viewController 将永远无法释放。
    • 你试图模拟的概念是什么?
    • @srikar 我正在尝试显示系统的进度。啊……好吧……现在我明白了。我不需要从其他视图更新 progressView。我也可以在viewWillAppear 方法中做到这一点。但是我如何继续在后台运行计时器,以便count 会随着时间的推移不断增加
    • @srikar : 你能帮帮我吗?
    【解决方案2】:

    您可以在 ProgressViewController(甚至应用程序委托)中保留一个属性,例如跟踪进度的 float。当您需要更新进度时,另一个 ViewController 可以更改该属性的值。

    一旦视图变得可见,从 viewWillAppear: 更新 UI (UIProgressView)。

    【讨论】:

      【解决方案3】:

      你可以这样在后台添加方法

      dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
      // Add code here to do background processing
      // increment the progress here and keep the property of that count in appdelegate 
      //
      dispatch_async( dispatch_get_main_queue(), ^{
          // Add code here to update the UI/send notifications based on the
          // results of the background processing
      });
      

      });

      在不同视图的 viewWillAppear 中你可以这样设置: [loadingProgressView setProgress: appDelegate.count];

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-15
        • 1970-01-01
        • 1970-01-01
        • 2011-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多