更改手动添加的 UINavigationBar 的右侧 BarButtonItem?

Change the right BarButtonItem of a manually added UINavigationBar?

我有一个 UINavigationBar,我已将其手动拖动并添加到情节提要中的 ViewController。在该 NavigationBar 中,我拖动并添加了一个 "UIBarButtonItem" 样式作为默认 "Add" 图像。

视图是模态推送的,因此它没有自动推送的 NavigationBar。

navBar 和 BarButton 都连接到我的 viewcontroller 和故事板,就像这样

@property (strong, nonatomic) IBOutlet UINavigationBar *RibbonDetailNavBar;
@property (strong, nonatomic) IBOutlet UIBarButtonItem *addRemoveButton;

我尝试在 viewDidLoad 中将按钮图像更改为另一个默认值,垃圾桶图标

if (alreadyAdded)
{
    [self.navigationItem.rightBarButtonItem setStyle:UIBarButtonSystemItemTrash];
}

没有效果。

我也试过这个:

if (alreadyAdded)
{
    _addRemoveButton = nil;
}

同样没有效果

还有这个:

if (alreadyAdded)
{
    _addRemoveButton = [[UIBarButtonItem alloc]initWithImage:nil style:UIBarButtonSystemItemTrash target:nil action:nil];
}

这也没有效果。

如何将此按钮设置为垃圾桶图标?

UIBarButtonSystemItemTrash 无法通过 style 属性 检索。样式是 UIBarButtonItemStyle 类型,可以是 UIBarButtonItemStylePlainUIBarButtonItemStyleBordered

调查documentation here

使用此代码

@property (strong, nonatomic) IBOutlet UINavigationBar *RibbonDetailNavBar;
// No need to create rightBarButtonItem IBOutlet.
if (alreadyAdded)
{
    self.RibbonDetailNavBar.topItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemTrash target: nil action: nil];
}
else {
    self.RibbonDetailNavBar.topItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemAdd target: nil action: nil];
}

希望对你有帮助。编码愉快! :)