适用于iOS的UIBarButtonItem-Badge

我正在使用此控件在barbuttonitem上显示徽章。 它适用于导航控制器堆栈中的第一个控制器或根控制器。 在推送到另一个控制器时,我试图显示徽章,我看不到任何效果。

您应该首先在viewDidLayoutSubviews设置badgeValue。 在这种情况下,它会出现并且不会闪烁,就像在viewDidAppear设置它一样:

  - (void)viewDidLayoutSubviews { barButton.badgeValue = @"5"; } 

建议不要在viewDidLayoutSubviews设置navigationItem ,因为它不是语义的。

您的问题的关键是徽章视图被添加到[UIBarButtonItem valueForKey:@"view"] ,但是当初始化UIBarButtonItem时, valueForKey:@"view"尚不存在,因此添加徽章失败。

我建议你试试QMUIBadge ,它可以解决你的问题。

 UIBarButtonItem *rightItem = [[UIBarButtonItem alloc] init]; rightItem.qmui_badgeInteger = 1;// number rightItem.qmui_badgeString = @"99+";// or string // setRightBarButtonItem any time self.navigationItem.rightBarButtonItem = rightItem;