Как я могу скрыть текст кнопки «Назад» от контроллера навигации UIN? У меня будет только «<», а не «<Назад»
104
Как я могу скрыть текст кнопки «Назад» от контроллера навигации UIN? У меня будет только «<», а не «<Назад»
Ответы:
В конструкторе интерфейса вы можете выбрать элемент навигации предыдущего контроллера и изменить
Back Button
строку на то, как вы хотите, чтобы кнопка возврата отображалась как.Например, если вы хотите, чтобы он был пустым, просто поставьте пробел.Вы также можете изменить его с помощью этой строки кода:
[self.navigationItem.backBarButtonItem setTitle:@"Title here"];
Или в Swift :
self.navigationItem.backBarButtonItem?.title = ""
источник
Back Button
в IB уже пусто, просто добавьте пробелBack
и покажите стрелку.Вы также можете сделать это с помощью раскадровки. В инспекторе атрибутов элемента навигации предыдущего контроллера вы могли установить "" в поле кнопки "Назад". См. Изображение ниже. Замените «Ваш заголовок здесь» на «». Тем самым вы добьетесь желаемого результата. Вам больше не нужно возиться с «Заголовком».
Программно вы могли бы использовать
[self.navigationItem.backBarButtonItem setTitle:@" "];
где self относится к контроллеру, который подталкивает желаемый контроллер View.
Образец до, после панели навигации
Перед
После
источник
backBarButtonItem
программная установка не работает, но установка через раскадровку работает.backBarButtonItem
программно у меня работает в iOS 9.Реализовать можно
UINavigationControllerDelegate
так:Старый Свифт
Swift 4.x
backBarButtonItem
этоnil
по умолчанию , и это влияет на следующий толкнул контроллер, так что вы просто установить его для всех контроллеровисточник
Установка заголовка кнопки возврата на
@""
илиnil
не будет работать. Вам нужно сделать всю кнопку пустой (без заголовка или изображения):Цель-C
Swift
Это должно быть сделано на контроллере представления, который находится поверх вашего контроллера представления в стеке навигации (то есть, откуда вы переходите к своему VC через
pushViewController
метод)источник
Другое решение этой проблемы для ситуаций, когда у вас много контроллеров представления, - это использовать
UIAppearance
прокси для эффективного скрытия текста заголовка кнопки возврата, например:Это решение отобразит текст в виде крошечной прозрачной точки, аналогично ручной установке заголовка кнопки «Назад»
@" "
, за исключением того, что оно влияет на все кнопки панели навигации.Я не предлагаю это как общее решение проблемы, потому что это влияет на все кнопки панели навигации. Он меняет парадигму, так что вы выбираете, когда показывать заголовки кнопок, а не когда скрывать заголовки.
Чтобы выбрать, когда показывать заголовки, либо вручную восстановите атрибуты текста заголовка по мере необходимости, либо создайте специализированный подкласс,
UIBarButtonItem
который делает то же самое (возможно, с другимUIAppearance
прокси).Если у вас есть приложение, в котором нужно скрыть большинство заголовков кнопок «Назад», и только несколько (или ни одной) кнопок навигации являются системными кнопками с заголовками, это может быть для вас!
(Примечание: изменение размера шрифта необходимо, даже если цвет текста четкий, чтобы длинные заголовки не вызывали смещения заголовка центральной панели навигации)
источник
Добавьте следующий код в viewDidLoad или loadView
Я тестировал его на iPhone и iPad с iOS 9
источник
Вы можете добавить эту категорию Objective-C, чтобы все кнопки «Назад», созданные контроллером навигации, не имели текста. Я только что добавил его в свой файл AppDelegate.m.
PS - (Я не знаю, как заставить это расширение работать со Swift, у него были странные ошибки. Приветствуются правки, чтобы добавить версию Swift)
источник
override
это сделать в быстром темпе. Очень интересный вопросЯ пробовал несколько выше и ниже, но они не работали. Это сработало для меня:
источник
Единственное, что работает без побочных эффектов, - это создание настраиваемой кнопки возврата. Пока вы не предоставляете настраиваемое действие, работает даже жест слайда.
К сожалению, если вы хотите, чтобы все кнопки возврата не имели заголовков, вам необходимо настроить эту настраиваемую кнопку возврата во всех контроллерах представления: /
Очень важно установить в качестве заголовка пробел, а не пустую строку.
источник
чтобы программно удалить текст из кнопки возврата, используется ниже Код, это будет работать с xcode7 и выше.
self.navigationController.navigationBar.topItem.title = @ "";
или
manualLy в раскадровках, выберите панель навигации на контроллере представления и вставьте "" в текст кнопки возврата.
это будет работать. Спасибо
источник
self.navigationController?.navigationBar.topItem?.title = " "
в Xcode 9 и работал!Текущий ответ не работал. Я хотел полностью удалить заголовок , но текст «назад» никуда не делся.
Вернитесь к предыдущему контроллеру представления и установите его свойство title:
ТОЛЬКО работает, когда предыдущий контроллер представления не имеет заголовка
источник
@""
.Альтернативный способ - использовать собственный класс NavigationBar.
То есть при этом удаляются заглавия всего проекта. Просто установите собственный класс для UINavigationController.
источник
Установите заголовок предыдущего VC в "" строку с пробелом. а заголовок с кнопкой возврата будет заменен строкой с одним пробелом.
На Back нажмите еще раз, чтобы вернуть заголовок к исходному в viewWillAppear.
источник
Используйте обычай,
NavigationController
который отменяетpushViewController
источник
Уже много ответов, вот мои два цента по этой теме. Я нашел этот подход действительно надежным. Вам просто нужно поместить это в viewController перед переходом.
Swift 4:
источник
Я перепробовал все в этом посте. Единственное рабочее решение - это @ VoidLess's
Вот тот же ответ, но более полный
источник
Это мое разрешение для iOS11, я меняю внешний вид UIBarButtonItem в applicationDidFinishLaunchingWithOptions:
Вы не можете изменить смещение Y, потому что оно изменит положение кнопки задней панели также в iOS11, но это нормально в iOS10 и ниже.
источник
В Swift3,
Если вы установите глобальную настройку
источник
Swift 3.1 Вы можете сделать это, реализовав метод делегата UINavigationController.
источник
Для тех, кто хочет глобально скрыть заголовок кнопки возврата.
Вы можете Swizzle
viewDidLoad
изUIViewController
так.Использование:
источник
Если вы ориентируетесь на iOS 13 и новее, вы можете использовать этот новый API, чтобы глобально скрыть заголовок кнопки «Назад» .
источник
Я боролся с этим, потому что у меня был собственный контроллер навигации. Я смог удалить текст заднего элемента во всех контроллерах представления с помощью этого кода в моем пользовательском классе контроллера навигации.
override func viewDidLayoutSubviews() { self.navigationBar.backItem?.title = "" }
Это удаляет все заголовки задних элементов с помощью этого настраиваемого контроллера навигации.
источник
В iOS 11 мы обнаружили, что установка
UIBarButtonItem
очень маленького значения шрифта / цвета текста внешнего вида или прозрачного цвета приведет к исчезновению другого элемента панели (система больше не учитывает класс элемента UIBarButton, она преобразует его в a_UIModernBarButton
). Также установка смещения обратного текста за пределы экрана приведет к миганию во время интерактивного всплывающего окна.Итак, мы взяли
addSubView
:источник
источник
Обратный текст берется из , последнего контроллера просмотра
navigationItem.title
иnavigationItem.title
устанавливается автоматическиself.title
. Самый простой способ решить проблему - это крючокsetTitle:
, убедитесьnavigationItem.title = @""
Поместите этот код по
AppDelegate.m
желанию, и все будет в порядке。Более подробная информация на https://www.jianshu.com/p/071bc50f1475 (Simple Chinease).
источник
Мое решение: - XCode: 10.2.1 - Swift: 5
источник
XCode 11.5 Swift 5
Очень простой - хотя, возможно, немного хакерский - способ сделать это программно, если вам не нужна настраиваемая кнопка возврата, - это установить размер шрифта равным нулю в контроллере представления, который вы помещаете в стек, вызывая что-то вроде этого из viewDidLoad
источник
Наконец-то нашли идеальное решение, чтобы скрыть задний текст по умолчанию во всем приложении.
Просто добавьте одно прозрачное изображение и добавьте следующий код в свой AppDelegate.
источник
Следующий метод работает на iOS 11 и не дает сбоев в других версиях iOS. Это может привести к отклонению вашего приложения в обзоре App Store, поскольку и UIModernBarButton, и UIBackButtonContainerView являются частными API. Поместите в AppDelegate.
источник
Это из моего кода xamarin.forms, класс происходит от
NavigationRenderer
источник