Использование Xcode 11.3.1, Simulator11.3.1, iPhoneX, Swift5.1.3, iOS13.3,
Мне интересно, почему половина моего приложения внезапно исчезает !! Может быть, это обновление для Xcode 11.3.1 ???
Ниже приведен скриншот иерархии просмотра отладки Xcode.
С левой стороны показано то, что показывает iPhone 11 Pro Simulator и правая сторона - это иерархия представлений отладки:
Очевидно, что в иерархии представлений есть еще много объектов (например, круглые кнопки внизу), которые не отображаются в симуляторе (а также не в физическом iPhoneX). Также полностью отсутствует навигационная панель !!!!
Выделенный синим цветом объект представляет собой пользовательскую панель навигации (состоящую из stackView). Это работало раньше, но не с момента обновления XCode. Я действительно не верю этому. Что может go не так здесь ??
Если это не обновление Xcode, то мой рефакторинг раскадровки также может быть причиной этой потери представления.
До моего рефакторинга рассматриваемый V C был ChildViewController другого ViewController. Теперь это точка входа в приложение. Может ли это изменение принести потери зрения? Я хочу видеть NavigationController с большим заголовком. Но теперь нет NavigationController!
Вот код, который устанавливает панель навигации:
override func viewDidLoad() {
// set up navigationItem and navigationController look and feeel
navigationItem.largeTitleDisplayMode = .always
navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
navigationController?.set_iOS12_lookAndFeel()
navigationItem.title = "bluub"
}
И требуется расширение NavigationController:
import UIKit
extension UINavigationController {
func set_iOS12_lookAndFeel() {
if #available(iOS 13.0, *) {
self.keep_iOS12_lookAndFeel()
} else {
let attrLargeTitle = AppConstants.FontAttributes.NavBar_LargeTitleTextAttributes
self.navigationBar.largeTitleTextAttributes = attrLargeTitle
let attrTitle = AppConstants.FontAttributes.NavBar_TitleTextAttributes
self.navigationBar.titleTextAttributes = attrTitle
}
}
private func keep_iOS12_lookAndFeel() {
if #available(iOS 13.0, *) {
let navBarAppearance = UINavigationBarAppearance()
navBarAppearance.configureWithDefaultBackground()
navBarAppearance.backgroundEffect = .init(style: .systemThickMaterialDark)
navBarAppearance.titleTextAttributes = AppConstants.FontAttributes.NavBar_TitleTextAttributes
navBarAppearance.largeTitleTextAttributes = AppConstants.FontAttributes.NavBar_LargeTitleTextAttributes
navBarAppearance.buttonAppearance.normal.titleTextAttributes = AppConstants.FontAttributes.NavBar_ButtonAppearance_Normal
navBarAppearance.doneButtonAppearance.normal.titleTextAttributes = AppConstants.FontAttributes.NavBar_Done_ButtonAppearance_Normal
self.navigationBar.standardAppearance = navBarAppearance
self.navigationBar.scrollEdgeAppearance = navBarAppearance
}
}
}
.
---------------- дополнительные выводы ------------ -----------------
После очередного рефакторинга раскадровки я мог вернуть круглые кнопки меню. Тем не менее, LargeTitle-NavigationBar по-прежнему полностью отсутствует.
Честно говоря, в последнем рефакторинге не было никаких новых ограничений или других настроек раскадровки, как раньше. Тот факт, что я выкинул NavigationController и заменил его идентичным новым, а также переназначил одно или другое ограничение меню-кнопки-View, вернул живое нижнее меню. Насколько я могу судить, никакой разницы с предыдущей раскадровкой не было.
Очень досадно, почему раскадровку нужно перерисовывать в основном для правильного рендеринга. Здесь что-то кажется поврежденным, что касается функциональности XCode с раскадровкой!
Но давайте оставим этот разговор.
Мой оставшийся вопрос:
Как я могу вернуть пропавшее Панель навигации ?????????
.
--------- ------- еще одна находка -----------------------------
Если я переназначу "сначала" -entry-ViewController "к старому ViewController, который в конечном итоге добавляет Menu-button-ViewController как ChildViewController -> тогда все работает!
Если я назначу «first-entry-ViewController» непосредственно на Menu-button-ViewController, то панель навигации исчезнет!
Вот обзор: