将活动指示符添加到导航栏

时间:2014-02-17 21:22:03

标签: ios uinavigationcontroller uiactivityindicatorview uinavigationitem

我有一个视图控制器,当用户点击按钮时启动异步网络请求,然后在请求完成后推送另一个控制器。在那个介入时间,我希望导航栏显示活动指示器,以便用户知道它正在获取数据。我在按钮的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线程不会被阻止(我可以点击其他按钮并在等待时导航不同的路径)。 我错过了什么吗?

3 个答案:

答案 0 :(得分:2)

我解决了。

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

答案 1 :(得分:0)

我在显示UIBarButtonItem时遇到问题,如果该地方已存在self.navigationItem.rightBarButtonItem = nil; self.navigationItem.rightBarButtonItem = spinner; 。如果是这种情况,请尝试:

{{1}}

答案 2 :(得分:0)

你也可以尝试像这样设置条形按钮项目(如果你的目标是至少iOS 5):

self.navigationItem.rightBarButtonItems = @[spinner];