【问题标题】:How can I put a progress bar in a UINavigationController's toolbar like the Mail app?如何将进度条放在 NavigationController 工具栏中,如 Mail 应用程序?
【发布时间】:2009-11-18 19:26:05
【问题描述】:

我的应用程序连接到网络以检索一些数据,我想在我的应用程序的 UINavigationController 的工具栏中显示一个进度条。

我真正想要的和Mail应用非常相似:

                                    

除了我希望进度条左侧没有任何内容,右侧有一个取消按钮。

我一直在摆弄代码,试图做到这一点,但我以前从未使用过导航控制器的工具栏,所以我不确定从哪里开始。

有谁知道我可能会这样做,或者我可以在哪里找到解释如何做到这一点的资源?

我已经阅读了 Human Interface GuideUINavigationController class referenceView Controller Programming Guide,但它们只展示了如何使用简单的按钮和分段控件进行非常基本的工具栏布局。

【问题讨论】:

    标签: iphone user-interface uinavigationcontroller toolbar


    【解决方案1】:

    从一个空的 UIView 开始,添加一个文本标签和一个进度指示器,并按照它们在邮件应用程序中显示的方式定位它们。最后,创建一个包含此视图的 UIBarButtonItem 并将其添加到您的工具栏:

    UIBarButtonItem* progressItem = [[UIBarButtonItem alloc] initWithCustomView:progressItemView];
    toolbar.items = [NSArray arrayWithObject:progressItem];
    

    您可以通过编程方式或在 Interface Builder 中执行此操作。

    【讨论】:

    • 我怎样才能得到进度视图上方的标签?到目前为止,我在左侧有一个 Flex 空间,在右侧有一个进度视图和一个取消按钮,但我不确定如何在进度视图上方获取文本。我试过设置 UIBarButtonItem 标题属性,但它没有显示在任何地方。
    • 在你的工具栏中放一个空的 UIView。将 UILabel 和 UIProgressIndicator 添加到该视图并相应地定位它们。您可以在 Interface Builder 中完成所有这些操作,或者您可以在 Interface Builder 中设计您的视图,然后以编程方式将该视图添加到您的工具栏。
    【解决方案2】:

    这很容易使用 IB。只需将一个工具栏拖到您的视图中,然后拖一个 NSProgressIndicator。最后,将 NSFlexibleSpacer 拖到进度条的左侧,将取消按钮拖到右侧。您可能需要在左右两侧添加一些 NSSpacers 才能让所有内容正确排列。

    【讨论】:

    • 即使我想使用 UINavigationController 的工具栏,我还能使用 IB 吗?我不想在单独的 xib 中创建另一个工具栏。
    • 另外,进度条有关联标签还是我必须添加自己的标签?类引用没有提到任何标签,但工具栏有一个 initWithTitle 初始化器。
    • Darren 下面的评论显示了以编程方式执行此操作的方法。您想使用自定义 UIBarButtonItem 及其 initWithCustomView。
    猜你喜欢
    • 1970-01-01
    • 2017-07-30
    • 1970-01-01
    • 2019-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-07
    相关资源
    最近更新 更多