Как изменить заголовок UITabBarItem по умолчанию

#ios #ios5 #uitabbar

#iOS #ios5 #uitabbar

Вопрос:

Я хочу использовать стандартный элемент панели вкладок с пользовательским заголовком. Я меняю заголовок после создания TabBarItem непосредственно self.TabBarItem.title = @»Понравилось». Например, «Избранное» — UITabBarSystemItemFavorites:

  - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        self.title = NSLocalizedString(@"Liked", @"Liked");
        self.tabBarItem = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:0];
        self.tabBarItem.title = @"Liked";
    }
    return self;
}
  

Могу ли я это сделать? Если да, где я допустил ошибку?

UPD: изменение заголовка элемента панели вкладок в viewDidLoad () работает на iOS4, но не работает на iOS5. Существует ли другой подход?

Спасибо

Ответ №1:

Вы должны сделать это в viewDidLoad , а не в инициализации.

Комментарии:

1. извините, но этот подход работает для меня только на iOS 4.3, но для iOS 5 он не работает:-( Есть идеи?

2. Кажется, что что-то переопределяет ваш заголовок. Проверьте жизненный цикл вашего ViewController, чтобы отследить, где это происходит.

Ответ №2:

В соответствии с Swift5.1 и Xcode заголовок и изображение элементов панели системных вкладок не могут быть изменены. Они определяются как enum в obj c следующим образом. Это список:

 typedef enum UITabBarSystemItem : NSInteger {
case more, favorites, featured, topRated, recents, contacts, history, bookmarks, search, downloads ,mostRecent, mostViewed
} UITabBarSystemItem;
  

На это есть причина. Некоторые значки сразу узнаваемы во всей экосистеме iOS и означают одно и то же для всех, поэтому их невозможно использовать по-разному.
Таким образом, Apple создает лучший пользовательский интерфейс.
Вы не можете использовать значок Apple и использовать другой заголовок. Вместо этого вы можете использовать пользовательский значок и пользовательский заголовок или в раскадровках выбрать символ SF, подобный этому:

введите описание изображения здесь