0

Я хотел бы изменить BackBarButtonItem на все виды в моем приложении iOS, чтобы они отображали только стрелку назад без текста.Изменить BackBarButtonItem для всех UIViewControllers?

Это единственный способ достичь этого - пройти через каждый UIViewController и установить self.navigationItem.backBarButtonItem.title? Кажется, я должен был бы создать суперкласс для определения значения по умолчанию backBarButtonItem.title, но я не уверен, с чего начать.

Благодарим за помощь.

+0

Вы пробовали категорию на UIViewController? – Simon

+0

Я думаю, что если я сделаю какую-то категорию, у меня будет #import эта категория в каждый контроллер навигации, правильно? В настоящее время я изучаю Swizzling. – Chris

+0

Нет, вам не нужно будет #import его. – Simon

ответ

1

Вам не нужно изменять его для каждого класса контроллера вида. Вы можете поднять его и изменить один раз, или вы можете сделать это в своем делете приложения.

Если вы хотите, чтобы подклассы панель навигации, вы можете просто набор обратно кнопки с текстом @ «»:

UIBarButtonItem *newBackButton = 
    [[UIBarButtonItem alloc] initWithTitle:@"" 
            style:UIBarButtonItemStylePlain 
            target:nil 
            action:nil]; 
    [[self navigationItem] setBackBarButtonItem:newBackButton]; 

Если вы хотите сделать это в приложение делегата вы можете сделать это двумя способами :

Один из способов, чтобы установить цвет текста кнопки, как чистый цвет:

[[UIBarButtonItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor clearColor]} forState:UIControlStateNormal]; 

Другой способ заключается в позиционировании кнопку назад от экрана, так что пользователь не может видеть его

[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -200) forBarMetrics:UIBarMetricsDefault]; 
+0

Не будут ли атрибуты '[UIBarButtonItem appearance]' вызывать все кнопки панели навигации, а не только кнопки 'назад', чтобы скрыть свои заголовки? – Chris

+0

Да, вы правы, это потому, что я не упоминал кнопку «Назад» для этой строки кода. Если вы используете видимость, это два способа, доступных на данный момент. Apple должна обновить API, чтобы установить заголовок кнопки «Назад», используя внешний вид. –

+0

У вас есть версия Swift? Я пытаюсь перевести, но не могу этого добиться. – jo3birdtalk

Смежные вопросы