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

时间:2017-01-31 18:51:20

标签: ios objective-c uinavigationbar uibarbuttonitem uibarbuttonitemstyle

我有一个UINavigationBar我手动拖动并添加到我的故事板中的ViewController。在那个NavigationBar中,我拖动并添加了一个" UIBarButtonItem"被设为默认"添加"图像。

视图是以模态方式推送的,因此它没有自动推送的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];
}

也没有效果。

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

1 个答案:

答案 0 :(得分:1)

UIBarButtonSystemItemTrash属性无法检索

style。 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];
}

希望它对你有所帮助。快乐的编码! :)