Проблема с установкой значения badgeValue при таком подходе:
[(UIViewController *)[tabBarController.viewControllers objectAtIndex:4] tabBarItem].badgeValue = @"...";
- если вы используете функцию «Больше», когда у вас более 5 элементов табуляции. Если пользователь перемещает рассматриваемый элемент вкладки в другую позицию, вы будете устанавливать значение значка для другого элемента вкладки.
Если вы начали с шаблона контроллера навигации / вкладки Apple, просто создайте IBOutlet в Application Delegate, ссылающийся на конкретный элемент вкладки, который вы хотите обновить.
Затем получите доступ к элементу вкладки из делегата приложения откуда угодно, используя следующий подход:
MyApplicationDelegate *appDelegate = (MyApplicationDelegate *)[[UIApplication sharedApplication] delegate];
[[appDelegate myTabItemOutlet] setBadgeValue:@"1"];