代码之家  ›  专栏  ›  技术社区  ›  Vadim

如何在nsoutlineview中显示不确定的nsprogramindicator?

  •  4
  • Vadim  · 技术社区  · 15 年前

    我需要显示项目子项的加载进度。请建议如何像在邮件应用程序中那样实现进度指示器:

    Progress Indicator in Outline View http://www.quicksnapper.com/files/10513/5329281414A48CEBA2FFE0_m.png

    这里是使用指标子视图的源代码: http://snippets.dzone.com/posts/show/7684

    3 回复  |  直到 13 年前
        1
  •  6
  •   danielpunkass    15 年前

    这比实际情况要困难,因为苹果不提供nsprogressindicatorcell。虽然表视图和大纲视图支持在其中显示自定义单元格的想法,但它们的设置并不容易支持自定义子视图。

    因此,技巧变为,如何在窗口中的所需位置显示和动画一个完整的nsprogramindicator视图,而不能够在表视图行中实际安装它?

    我使用的技巧是将nsprogramcindiscator作为大纲或表视图本身的子视图进行逐字安装。要查找添加子视图的位置,使其看起来像“在行中”,请使用frameofcellatcolumn:row:method。然后,您可以将进度指示器定位在大纲视图的该位置内。完成旋转进度指示器后,您可能不想再显示它,所以只需将其从超级视图中移除并丢弃即可。

    您需要确保在进度指示器上设置了所需的自动调整大小标志,以便在/如果您的大纲视图调整了大小时,它会以正确的方向浮动。

    我相信还有其他类似的黑客可以达到预期的最终结果。我不认为有任何超级干净的方法来完成这个技巧。

        2
  •  3
  •   Peter Hosey    13 年前

    Vienna 是一个开源(Apache许可证)提要阅读器,它的源代码列表中包含此提要。你应该看看 the Vienna source code 看看他们是怎么做到的。

        3
  •  2
  •   Leo    15 年前

    维耶纳的实施并不完美。将提要添加到文件夹,然后在加载时,进度指示器正忙着折叠该文件夹。您将看到进度指示器仍在同一位置运行。