Я знаю, что на этот вопрос уже есть ответы, и он старый, но у меня был такой же опыт, и я нашел кое-что интересное. Мой код должен отображать (на панели инструментов) кнопку иногда, и метку некоторые другие, в зависимости от состояния программы. Если я создаю объект UILabel в своем классе контроллера и повторно использую его в вызовах
UIBarButtonItem *myItem = [[UIBarButtonItem alloc] initWithCustomView: _myUILabel];
[self setToolbarItems: [NSArray arrayWithObject: myItem]];
[myItem release];
каждый раз, когда мне нужно переключиться с кнопки на ярлык, ярлык не будет отображаться (на самом деле он появляется в первый раз, а после переключения назад и вперед он перестает отображаться). Я потратил часы на эту проблему, и если бы не факт, что я лысый, я бы все равно выдернул все волосы в отчаянии. Я проверил, все ли мои счета в порядке. Мой сохраненный ярлык правильный и действительный.
Я обнаружил, что если я создаю новый ярлык каждый раз, когда мне нужно показать его на панели инструментов, то проблема исчезнет. Определенно есть проблема в обработке UILabel внутри setToolbarItems. Итак, мой совет: создайте новую метку, установите текст и т. Д., Оберните его в UIToolBarItem и снова установите элементы панели инструментов.
Это не идеал, он тренирует выделение и отпускание больше, но это работает. Я надеюсь, что это поможет кому-то там.