ios - UIBarButtonItem 未更新

标签 ios objective-c uinavigationcontroller uibarbuttonitem

我有一个从服务器获取数据的异步例程。当点击导航中的刷新按钮时,我将其替换为 UIActivityIndicatorView ,那部分工作正常。获取数据的对象有一个协议(protocol),用于在完成检索数据时通知其委托(delegate)。当委托(delegate)( UITableViewController 子类)接收该方法时,我使用新数据重新加载 TableView ,并将新的刷新按钮分配给 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/

相关文章:

ios - 在没有Mac的情况下开发iOS应用

ios - 显示 JSON 响应中的 cell.textLabel.text

objective-c - 将对象移动到触摸位置

iOS - UINavigationController 并添加左栏按钮?

ios - SwiftUI 在没有按钮的情况下询问通知权限

ios - 如何修复命令 PhaseScriptExecution 失败并在 macOS 中运行 Flutter 时出现非零退出代码?

IOS 8 Objective-C 搜索栏和表格 View 使用谷歌自动完成

ios - uiswipegesturerecognizerdirectionup 和 uinavigationcontroller 不工作?

ios - 删除 iOS7 中的后退箭头

ios - 无法使用类型的参数列表调用 'requestAuthorizationToShareTypes'