Новый API NavigationStack SwiftUI не работает с навигационной панелью UIHostingController.IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Новый API NavigationStack SwiftUI не работает с навигационной панелью UIHostingController.

Сообщение Anonymous »


У меня есть приложение UIKit, и я перенес некоторые из своих экранов в SwiftUI с помощью UIHostingController. Раньше я мог повторно использовать одну и ту же панель навигации UIKit. Но после перехода на API NavigationStack мне не удалось воспроизвести то же поведение.

Вот полный воспроизводимый код.
импортировать UIKit импортировать SwiftUI структура ListView: Просмотр { @State var selectedString: Строка? = ноль var body: some View { let Details = ["foo", "bar", "baz"] // Нет необходимости переноса под NavigationView, иначе будет двойная панель навигации. // Это будет использовать панель навигации UIKit Список { ForEach(details, id: \.self) {подробнее см. let Destination = Text("Это подробная страница для \(detail)") .navigationTitle("Страница сведений") Навигационная ссылка( деталь, пункт назначения: пункт назначения, тег: деталь, выбор: $selectedString) } } .navigationTitle("Страница списка") } } структура ListViewWithNewAPI: Просмотр { @State var selectedString: Строка? = ноль var body: some View { let Details = ["foo", "bar", "baz"] Навигационный стек { List(details, id: \.self, choice: $selectedString) {подробнее в NavigationLink(подробно, значение: подробно) } .navigationDestination(item: $selectedString) {подробнее см. Text("Это подробная страница для \(detail)") .navigationTitle("Страница сведений") } .navigationTitle("Страница списка") .navigationBarTitleDisplayMode(.inline) } } } класс ViewController: UIViewController { @objc частная функция TapButton1() { пусть listVC = UIHostingController(rootView: ListView()) NavigationController?.pushViewController(listVC, анимированный: true) } @objc частная функция TapButton2() { пусть listVC = UIHostingController(rootView: ListViewWithNewAPI()) NavigationController?.pushViewController(listVC, анимированный: true) } переопределить функцию viewDidLoad() { супер.viewDidLoad() // Выполняем любые дополнительные настройки после загрузки представления. let button1 = UIButton(frame: CGRect(x: 100, y: 100, ширина: 100, высота: 100)) button1.backgroundColor = .green button1.addTarget(self, действие: #selector(tapButton1), для: .touchUpInside) view.addSubview(кнопка1) let button2 = UIButton(frame: CGRect(x: 100, y: 300, ширина: 100, высота: 100)) button2.backgroundColor = .red button2.addTarget(self, действие: #selector(tapButton2), для: .touchUpInside) view.addSubview(button2) NavigationItem.title = "Заголовок UIKit" } }
Файл раскадровки по сути является первоначальным проектом, за исключением того, что я встроил виртуальный виртуальный компьютер в навигационный виртуальный компьютер.


Изображение


В приведенном выше коде ListView реализован с использованием устаревшего NavigationView, который хорошо работает с UIHostingController. ListViewWithNewAPI — это новая реализация, использующая новый API NavigationStack, и мне не удалось воспроизвести исходное поведение.

Вот видео, в котором сравниваются два варианта поведения. Пожалуйста, используйте пример кода, поэкспериментируйте и посмотрите, сможем ли мы добиться исходного поведения с помощью нового API.


Изображение

Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Новый API Swiftui's NavigationStack не работает с Nav Bar UihostingController
    Anonymous » » в форуме IOS
    0 Ответы
    0 Просмотры
    Последнее сообщение Anonymous
  • В чем точная разница между панелью приложений, панелью инструментов и панелью действий? и когда их конкретно использоват
    Anonymous » » в форуме Android
    0 Ответы
    29 Просмотры
    Последнее сообщение Anonymous
  • UIHostingController блокирует события касания для базового UIHostingController
    Anonymous » » в форуме IOS
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • UIHostingController блокирует события касания для базового UIHostingController
    Anonymous » » в форуме IOS
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • UIHostingController блокирует события касания для базового UIHostingController
    Anonymous » » в форуме IOS
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous

Вернуться в «IOS»