6

我有一个视图控制器,当用户点击按钮时启动异步网络请求,然后在请求完成后再推送另一个控制器。在那段时间里,我想让导航栏显示一个活动指示器,这样用户就知道它正在提取数据。我有这个代码在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线程不会出现阻塞(我可以在等待时点击其他按钮并导航不同的路径)。 我错过了什么吗?

+0

你的导航栏是什么颜色的? – Avt

回答

2

我解决它。

有一个取消按钮已经在键盘没有了时会消失。删除取消按钮的代码并不在乎它是否删除按钮或我的微调。我将微调代码移到了后面的位置,并且都很好。

0

如果在该位置已经存在UIBarButtonItem,则遇到问题。如果是这种情况下可以尝试:

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

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

self.navigationItem.rightBarButtonItems = @[spinner];