Cocoa 将视图标记为“视图”;“忙”;可可粉

Cocoa 将视图标记为“视图”;“忙”;可可粉,cocoa,nsview,Cocoa,Nsview,我正在编写一个Cocoa应用程序,我需要向用户指出视图无效,并且在后台作业完成之前无法响应 较长版本: 我的应用程序中的视图包含一些从服务器获取的数据。当应用程序确定数据无效时,它会获取新信息并显示。通常更新发生得太快而看不见,但是如果服务器或网络问题导致后台作业花费的时间超过一两秒钟,我需要确保用户 在作业完成之前无法与视图交互 可以判断视图正在等待更新;及 可以继续与应用程序的其他部分交互,直到作业完成 1) 这一点很重要,因为使用过时数据启动的任何操作都会失败,而且如果网络或服务器运行缓慢

我正在编写一个Cocoa应用程序,我需要向用户指出视图无效,并且在后台作业完成之前无法响应

较长版本:

我的应用程序中的视图包含一些从服务器获取的数据。当应用程序确定数据无效时,它会获取新信息并显示。通常更新发生得太快而看不见,但是如果服务器或网络问题导致后台作业花费的时间超过一两秒钟,我需要确保用户

  • 在作业完成之前无法与视图交互
  • 可以判断视图正在等待更新;及
  • 可以继续与应用程序的其他部分交互,直到作业完成
  • 1) 这一点很重要,因为使用过时数据启动的任何操作都会失败,而且如果网络或服务器运行缓慢,我不希望用户将时间浪费在徒劳地尝试与应用程序的该部分交互上。(如果用户仍然可以看到数据,那也没关系。事实上,这可能会有帮助,但并不重要。)

    可可豆的标准做法是什么?值得一提的是,在Eclipse框架中,我想我在
    ViewPart
    上使用了
    showBusy
    方法

    如果没有一个标准的方法,有没有人对解决这个问题有什么建议?我使用OSX的时间不长,所以我甚至不确定在这种情况下应用程序的外观和行为。(此页面上的屏幕截图看起来很有希望,但它是iOS,而不是OSX:)

    现在我正在用一个
    NSProgressIndicator
    替换整个视图,并在任务完成后恢复视图,但是删除视图意味着如果出现问题,我的应用程序可能会处于一种不正常的状态。此外,我希望能够将此功能分解为它自己的类或类别(?),因为我的应用程序中有几个不同的视图类会出现此问题。理想情况下,我希望以Eclipse的view.showBusy(true)/view.showBusy(false)这样简单的东西结束

    任何和所有的帮助都将不胜感激。
    谢谢

    为什么不在繁忙视图的顶部绘制另一个视图呢?您可以让它显示一个表示忙碌的图像,或者将其绘制为半透明,这样它会将忙碌视图的更新前版本遮住。

    这就是我链接到的iOS示例所显示的内容。苹果的用户界面指南似乎建议在附近放置一个异步进度监视器,让用户知道进度监视器适用于哪个视图,哪个视图看起来较差。我还没有想出一个方便的解决办法。在本例中,我回避了这个问题,让客户机订阅数据中的更改,而不是轮询数据的有效性,因此客户机永远不会处于知道自己有过时数据的状态。它假定其数据在服务器收到更新之前有效。