我有一个异步例程,可从服务器获取数据。当点击导航中的刷新按钮时,我将其替换为UIActivityIndicatorView,并且该部分可以正常工作。提取数据的对象具有协议,可以在完成检索数据时通知其委托。当委托(UITableViewController子类)接收该方法时,我用新数据重新加载表视图,并向rightBarButtonItem分配一个新的刷新按钮。但是,当我这样做时,UIBarButtonItem不会改变。当我在分配之前调用reloadData方法时以及在分配之后调用它时,都会发生这种情况。我不明白为什么更改根本就没有发生。这是我正在使用的两个方法调用。

这有效:

UIActivityIndicatorView *indicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
indicatorView.color = [UIColor orangeColor];
[indicatorView startAnimating];
[self.navigationItem.rightBarButtonItem initWithCustomView:indicatorView];

这是行不通的:
self.navigationItem.rightBarButtonItem initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(refreshOrderList:)];

我是否应该以其他方式更改这些barButtonItem

最佳答案

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(refreshOrderList:)];
您无法初始化已经初始化的对象,并不能期望它正常工作。创建一个新的条形按钮项并将其设置为rightBarButtonItem

关于ios - UIBarButtonItem不更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25064994/

10-11 22:15