Быстрый странный текст кнопки «Назад» в iphone plus

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

Пожалуйста, взгляните на мой снимок экрана, синий текст «Назад» всегда отображается на iphone plus (6s plus, 7 plus как для симулятора, так и для реального устройства). Он не отображается на меньшем экране iphone. Я пробовал много способов скрыть/изменить его с текущего/предыдущего контроллера, но безуспешно.

Так почему же это работает на меньшем iphone, но не на плюсовом?

Может ли кто-нибудь помочь мне :(. Спасибо.

Вот код:

@IBAction func filter(_ sender: Any) {
    let view:FilterViewController = self.storyboard?.instantiateViewController(withIdentifier: "FilterViewController") as! FilterViewController
    view.superVC = self
    view.currentFilter = currentFilter
    self.setLeftCloseNavigation()
    self.navigationController?.pushViewController(view, animated: true)
}

func setLeftCloseNavigation(){
    self.navigationController?.navigationBar.backgroundColor = UIColor.clear
    self.navigationController?.navigationBar.isTranslucent = true
    self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
    self.navigationController?.navigationBar.layer.mask = nil

    self.navigationController?.navigationBar.backIndicatorImage = UIImage(named: "icon_close")?.withRenderingMode(.alwaysOriginal)
    self.navigationController?.navigationBar.backIndicatorTransitionMaskImage = UIImage(named: "icon_close")?.withRenderingMode(.alwaysOriginal)
    navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
}

А вот viewDidLoad в нажатом контроллере:

override func viewDidLoad() {
    super.viewDidLoad()
    statusBar = UIColor.black
    setResetNavigation() }

func setResetNavigation(){
    navigationItem.hidesBackButton = false

    let skipButton = UIButton(frame: CGRect(x: 0, y: 0, width: 70, height: 30))
    skipButton.setTitle("Reset all".localized(), for: .normal)
    skipButton.setTitleColor(UIColor.black, for: .normal)
    skipButton.titleLabel?.font = UIFont(name: "HJGothamMedium", size: 16)
    skipButton.addTarget(self, action: #selector(resetAllClicked), for: .touchUpInside)
    let skip = UIBarButtonItem(customView: skipButton)
    navigationItem.rightBarButtonItem = skip
}

Это иерархия представлений

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


person bui manhcuong    schedule 25.04.2017    source источник
comment
можешь показать код   -  person Bhupat Bheda    schedule 25.04.2017
comment
проверьте свое представление в раскадровке и удалите эту кнопку.   -  person KKRocks    schedule 25.04.2017
comment
это настоящий ViewController?   -  person KKRocks    schedule 25.04.2017
comment
нет @KKRocks, это контроллер представления после нажатия   -  person bui manhcuong    schedule 25.04.2017
comment
@Bhupat Я добавил немного кода   -  person bui manhcuong    schedule 25.04.2017


Ответы (6)


Добавьте эту функцию:

   override func viewDidAppear(_ animated: Bool) {
          setResetNavigation()
          self.navigationController?.navigationBar.backItem?.title = ""
    }

панель навигации в iPhone 7S

person Harshil Kotecha    schedule 25.04.2017
comment
спасибо, но я не хочу удалять это, просто хочу удалить текст - person bui manhcuong; 25.04.2017
comment
да, я тоже пробовал это, это работает на меньшем iphone, но не на плюсовом :( - person bui manhcuong; 25.04.2017
comment
всего мин. я пробую это в 7s - person Harshil Kotecha; 25.04.2017
comment
да, я использую автоматическую компоновку, это FilterViewController , он был отправлен из контроллера, который является дочерним элементом tabBarController - person bui manhcuong; 25.04.2017
comment
можешь дать TeamViewer? - person Harshil Kotecha; 25.04.2017
comment
я думаю, проблема в вашем автоматическом макете - person Harshil Kotecha; 25.04.2017
comment
что произойдет, если вы проверите, что кнопка iPhone 7 также скрыта? - person Harshil Kotecha; 25.04.2017
comment
Я пригласил вас в тусовку, я тоже в офисе - person bui manhcuong; 25.04.2017

попробуй это

 self.navigationItem.hidesBackButton = true

Или проверьте свою раскадровку, она останется

person Lalit kumar    schedule 25.04.2017
comment
спасибо, но я не хочу скрывать, просто хочу удалить текст - person bui manhcuong; 25.04.2017

Используйте строку ниже, чтобы удалить текст

navigationController?.navigationBar.topItem?.title = ""
person harshal jadhav    schedule 25.04.2017
comment
Спасибо, я пытался, но это не сработало :(. Я поместил это как в предыдущий контроллер (до нажатия), так и в текущий контроллер (viewdidload, viewdidappear) - person bui manhcuong; 25.04.2017
comment
что это за крест. если это кнопка, посмотрите, не по ошибке ли вы поместили имя «Назад» на эту кнопку вместе с изображением креста - person harshal jadhav; 25.04.2017

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

Вы также можете вызвать отладчик представления, выбрав «Просмотр иерархии пользовательского интерфейса» в меню параметров представления процесса в навигаторе отладки или выбрав Отладка > Отладка представления > Захват иерархии представления.

person KKRocks    schedule 25.04.2017
comment
Пожалуйста, взгляните на скриншот иерархии представлений, который я только что добавил. - person bui manhcuong; 25.04.2017

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

self.navigationItem.title = " "

Имейте в виду, что вы должны установить его на предыдущем контроллере представления, а не на самом верхнем. Также вы должны установить пробел, а не пустую строку !!!

Также вы можете сделать это прямо на раскадровке

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

person Zell B.    schedule 25.04.2017

Из приведенного ниже кода вы можете установить цвет текста backButton на любой цвет, который вы хотите. Вы можете просто установить для backButton значение clear textColor. Таким образом, это не будет видно, когда оно появится.

 UIBarButtonItem.appearance(whenContainedInInstancesOf: [UINavigationBar.classForCoder() as! UIAppearanceContainer.Type]).setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.clear], for: .normal)

Обновление: если вы хотите использовать другой подход. Проверьте этот пост Как настроить символ возврата и текст возврата? и принятый ответ.

person Joe    schedule 25.04.2017