iOS / Objective-C:为自定义UIBarButtonItem添加徽章

时间:2017-09-29 20:26:19

标签: ios objective-c uibarbuttonitem badge

现在这很常见,但我找不到将徽章添加到自定义或非系统UIBarButton项目的方法。

以下内容将为systemUIBarButtonItem添加徽章。但它不适用于从图像创建的图像,即自定义图像。我想避免在单独的类上创建依赖项,并且非常希望找到类似于自定义按钮的类似内容。提前感谢任何建议。

这会为systemButton创建徽章,例如搜索按钮:

UIBarButtonItem *searchButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSearch target:self action:@selector(searchButtonPressed)];
int badgeint = 4;
NSString *badgestring = [NSString stringWithFormat:@"%d",badgeint];
self.navigationItem.rightBarButtonItems = @[searchButton];
self.navigationItem.rightBarButtonItem.badgeValue = badgestring;

自定义按钮的相同代码 - 没有用于通知的系统按钮,因此我需要使用自定义图像 - 不会生成徽章。

UIBarButtonItem *notificationButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"notification-32.png"] style:UIBarButtonItemStyleBordered target:self action:@selector(notificationButtonPressed)];     
int badgeint = 4;
NSString *badgestring = [NSString stringWithFormat:@"%d",badgeint];
self.navigationItem.rightBarButtonItems = @[notificationButton];
self.navigationItem.rightBarButtonItem.badgeValue = badgestring;

注意:我有barbuttonitems的原因是有时我使用多个)

感谢您的任何建议

编辑:

我发现我犯了一个愚蠢的错误 - 我设置了两个不同的值。我认为第二个会覆盖第一个,但显然它混淆了它。系统和自定义按钮之间没有区别。但是,我确实发现,如果您有多个按钮,徽章将始终显示在组的右侧。使用此方法,您似乎无法将徽章放在右侧第​​二个条形按钮项目上。

0 个答案:

没有答案