向导航栏添加活动指示器

Posted

技术标签:

【中文标题】向导航栏添加活动指示器【英文标题】:Adding an activity indicator to the nav bar 【发布时间】:2014-02-17 21:22:03 【问题描述】:

我有一个视图控制器,它在用户点击按钮时启动异步网络请求,然后在请求完成后推送另一个控制器。在此期间,我希望导航栏显示一个活动指示器,以便用户知道它正在获取数据。我在按钮的 IBAction 中有这段代码:

self.activityIndicator = [[UIActivityIndicatorView alloc]
     initWithActivityIndicatorStyle: UIActivityIndicatorViewStyleWhite]; 
     // I've tried Gray, White, and WhiteLarge
[self.activityIndicator startAnimating];
self.activityIndicator.hidden = NO;
UIBarButtonItem* spinner = [[UIBarButtonItem alloc] initWithCustomView: self.activityIndicator];
self.navigationItem.rightBarButtonItem = spinner;

指标未出现,但此代码已被调用。我看过有关该主题的其他帖子,他们说要这样做。 UI 线程在通话期间不会出现阻塞(我可以在等待时点击其他按钮并导航不同的路径)。 我错过了什么吗?

【问题讨论】:

你的导航栏是什么颜色的? 【参考方案1】:

我解决了。

那里已经有一个取消按钮,当键盘出现时它会消失。删除取消按钮的代码并不关心它是删除按钮还是我的微调器。我将微调器代码移到了稍后的位置,一切都很好。

【讨论】:

【参考方案2】:

如果UIBarButtonItem 已经存在于那个地方,我无法显示它。如果是这种情况,请尝试:

self.navigationItem.rightBarButtonItem = nil;
self.navigationItem.rightBarButtonItem = spinner;

【讨论】:

【参考方案3】:

您也可以尝试像这样设置栏按钮项(如果您的目标至少为 ios 5):

self.navigationItem.rightBarButtonItems = @[spinner];

【讨论】:

以上是关于向导航栏添加活动指示器的主要内容,如果未能解决你的问题,请参考以下文章

如何在导航栏中设置活动指示器?

如何在导航栏内添加页面指示器?

在基于窗口的应用程序 iPhone 中添加标签栏和导航栏

集成到搜索栏中的活动指示器不会显示在iPhone SDK中

禁用导航抽屉,在片段中切换主页按钮/向上指示器

在 swift 4 中使用 webkit 在 webView 中导航时创建活动指示器