Я хотел удалить текст с кнопки «Назад» на a UIBarButtonItem
, оставив только синий шеврон на панели навигации. Имейте в виду, что я разрабатываю для iOS 7. Я попробовал несколько методов, включая, но не ограничиваясь:
Это метод изображения, который мне не понравился (изображение выглядело неуместно):
UIBarButtonItem *barBtnItem = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"iOS7BackButton"] style:UIBarButtonItemStylePlain target:self action:@selector(goToPrevious:)];
self.navigationItem.leftBarButtonItem = barBtnItem;
Другой метод, который я попробовал, был такой, который просто не работал (ничего не отображалось):
UIBarButtonItem *barBtn = [[UIBarButtonItem alloc]init];
barBtn.title=@"";
self.navigationItem.leftBarButtonItem=barBtn;
Я хотел добиться чего-то вроде кнопок «назад», найденных в приложении iOS 7 Music, в котором был только один шеврон.
Спасибо.
Ответы:
Затем вы можете удалить заголовок кнопки «Назад».
Если вы используете раскадровку, вы можете установить инспектор атрибутов навигации Back Button с пробелом.
источник
[[UIBarButtonItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor clearColor]} forState:UIControlStateNormal];
UIControlStateHighlighted
Чтобы установить заголовок кнопки «Назад» для контроллера представления без изменения его заголовка, используйте:
Objective-C:
Swift:
Чтобы было ясно, это делается на контроллере вида, который вы увидите, если нажмете кнопку возврата. т. е. вместо того, чтобы видеть «<Настройки», вы хотите просто увидеть «<», тогда на вашем контроллере SettingsView вы поместите это в свой
init
. Тогда вы не получите никаких проблем с заголовком, который не отображается, когда вы смотрите на сам контроллер представления.источник
Если вы используете раскадровки, вы можете перейти к
Attributes Inspector
ViewController'уNavigation Item
(щелкнутьNavigation Bar
) и установить дляBack Button
свойства значение "" (один пробел). Это установит заголовок кнопки «Назад» на один пробел, оставляя шеврон видимым. Не нужно связываться с кодом.Обратите внимание, что это установит
Back Button
заголовок для кнопки «Назад», которая будет переходить к этому контроллеру вида из той, которая была нажата поверх него, а не для того,Back Button
что будет отображаться внутри этого контроллера!источник
Это работает для меня, чтобы отобразить только «задний» шеврон без какого-либо текста:
Установите это свойство в
viewDidLoad
View Controller, представляющем панель навигации, и это сделает свое дело.Примечание: я тестировал его только в iOS 7, что входит в сферу вопроса.
источник
-viewDidLoad
в VC, который мне не нужен текст Back. Однако позже я узнал, что когда я вставляю второй VC изnavigationController
текста заголовка, он появляется вскоре после, а не сразу. Я думаю, что видео могло бы проиллюстрировать это лучше, поэтому вот оно: ссылкаКогда вы устанавливаете заголовок кнопки, используйте @ "" вместо @ "".
--РЕДАКТИРОВАТЬ--
Что-нибудь меняется, когда вы пробуете другие строки? Я успешно использую следующий код:
backString - это переменная, для которой задано значение @ "" или @ "Back", в зависимости от того, работаю ли я на iOS 7 или ниже.
Стоит отметить, что этот код отсутствует в контроллере для страницы, для которой я хочу настроить кнопку возврата. На самом деле он находится в контроллере перед стеком навигации.
источник
setLeftBarButtonItem:backButton
вместо этого ничего не было бы там.Иногда полезно видеть вещи в контексте. Вот минимальный проект, который скрывает текст «назад», но показывает стрелку.
Раскадровка
От кнопки «Показать контроллер второго вида» происходит переход к второму контроллеру представления.
Я также добавил элемент навигации ко второму контроллеру представления, чтобы он имел заголовок. Это необязательно. Это не влияет на кнопку назад.
Код
FirstViewController.swift
SecondViewController.swift
Альтернативный метод (только IB, без кода)
На раскадровке выберите элемент навигации для первого контроллера представления (а не второго). Просто введите пробел для текста кнопки «Назад».
источник
источник
На iOS7 Apple представила два новых свойства для UINavigationBar: «backIndicatorTransitionMaskImage» и «backIndicatorImage».
Просто позвонив один раз:
Он будет отображать пользовательское изображение вместо символа шеврона по умолчанию, наследуя цвет оттенка keyWindow.
А для удаления названия я предложу ответ Камароса. Не забудьте вызвать этот код на контроллере представления, который выдвигает ваш новый контроллер представления. Удаление текста заголовка iOS UIBarButtonItem
источник
У меня не было большого успеха с предоставленными ответами, но я нашел действительно простую работу вокруг. В вашей раскадровке вы можете нажать на элемент навигации вашего UIViewController и установить текст кнопки возврата. Я установил для него одно пространство, и это дало мне то поведение, которое я искал.
источник
Это работало для меня в iOS10. Вызовите это из viewDidLoad контроллера представления.
источник
Простое решение этой проблемы, работающее как на iOS7, так и на 6, заключается в установке пользовательского представления заголовка в viewDidLoad:
Тогда в viewWillAppear: вы можете смело звонить
Поскольку ваш заголовок является пользовательским, он не будет перезаписан при возврате в стек навигации.
источник
[self.navigationItem.backBarButtonItem setTitle:@" "];
в viewWillAppear, но он не работал с представлениями, представленными после отклонения модального представления.На самом деле вы можете сделать это с помощью одного трюка:
Переопределите
UINavigationBar
класс и добавьте следующую строку кода:Затем инициализируйте ваш
UINavigationController
с этим пользовательским классом UINavigationBar .. и т. Д.UINavigationController * navController = [[UINavigationController alloc] initWithNavigationBarClass:[CBCNavigationBar class] toolbarClass:nil];
Надеюсь это поможет
источник
Я смог собрать что-то вместе, используя ответ DonnaLea. Вот как выглядит решение в моем подклассе UIViewController:
Проблема с оригинальным ответом состоит в том, что он удаляет заголовок из контроллера, когда вы возвращаетесь к нему. Попытка сбросить заголовок в viewWillDisappear слишком поздно в процессе перехода; Это приводит к тому, что заголовок возвращается, вместо того, чтобы красиво анимироваться. Однако willMoveToParentViewController происходит раньше и учитывает правильное поведение.
Предостережение: я проверил это только с помощью обычного UINavigationController push / pop. Там может быть дополнительное неожиданное поведение в других ситуациях.
источник
В методе prepareForSegue: вашего первого ViewController вы устанавливаете заголовок этих представлений на @ "", поэтому при нажатии следующего представления будет отображаться предыдущий заголовок ViewController, который будет @ "".
Единственная проблема в том, что когда вы нажмете кнопку «Назад», ваше предыдущее представление не будет иметь заголовка, поэтому вы можете добавить его снова в viewWillAppear:
Мне не очень нравится это решение, но оно работает, и я не нашел другого способа сделать это.
источник
SWIFT 3
источник
Ни один из ответов не помог мне. Но трюк сработал - я просто очистил заголовок контроллера представления, который нажимал (куда собирается кнопка «назад») непосредственно перед нажатием.
Поэтому, когда предыдущий вид не имеет заголовка, в iOS 7 кнопка «Назад» будет иметь только стрелку, без текста.
На
viewWillAppear
толкающем экране я вернул исходное название.источник
У меня была такая же проблема, и я сделал это таким образом.
--РЕДАКТИРОВАТЬ--
Это решение, когда вы действительно хотите удалить текст заголовка всех UIBarbuttonItem. Если вы хотите удалить только заголовок элемента кнопки задней панели, не существует простого простого удобного решения. В моем случае, поскольку у меня есть только несколько UIBarButtonItems, которые должны показывать текст заголовка, я просто изменил эти заголовки этих кнопок titleTextAttributes. Если вы хотите быть более конкретным, используйте код ниже, который изменит только кнопки панели навигации:
источник
UIControlStateHighlighted
а такжеЭто с помощью подкласса
navigationController
удаляет «Назад».Я использую это, чтобы удалить его навсегда через приложение.
источник
источник
Скрыть кнопку «Назад», заголовок панели навигации
источник
Вот что я делаю со мной, что проще убрать заголовок кнопки назад
источник
Swift 3.1 Вы можете сделать это, реализовав метод делегата UINavigationController. Он будет скрывать только заголовок с кнопкой «назад», мы все равно получим изображение стрелки назад и функциональность по умолчанию.
источник
Вы также можете использовать это:
Это работает для меня
источник
источник
Идеальное решение во всем мире
источник
Я создаю собственный класс
UINavigationController
и применяю его ко всем контроллерам навигации в моем приложении. Внутри этого пользовательскогоUINavigationController
класса я установилUINavigationBar
делегат, какself
только загрузится представление.Затем я реализую метод делегата:
Таким образом, я просто назначаю свой пользовательский класс всем моим контроллерам навигации, и он очищает заголовок от всех кнопок возврата. И просто для ясности, я всегда устанавливаю заголовок для всех остальных моих контроллеров представления
viewWillAppear
так, чтобы заголовок всегда обновлялся непосредственно перед появлением представления (в случае, если оно удаляется подобными приемами).источник
Просто введите один пробел для кнопки навигации «Назад»!
источник
Если, как и я, вы используете пользовательское представление вместо,
UINavigationBar
и застряли с кнопкой «Назад», то вам придется выполнить небольшую работу, которая кажется немного грязной.Кажется, что если он не будет представлен, то независимо от того, что он будет пытаться показать заголовок, это означает, что он будет показан, затем скрыт перед тем, как нарисован, и решит проблему.
источник
источник
Я сделал очень простую категорию с нулевым конфигом, чтобы скрыть все заголовки кнопок «Назад» через приложение, которое вы можете проверить здесь . На этот вопрос уже принят ответ, но для других это может быть полезно.
РЕДАКТИРОВАТЬ:
.h файл
.m файл
источник