Что является альтернативой для SwiftUI "pushViewController" UIKit в barButtonItem - PullRequest
1 голос
/ 27 июня 2019

Я работаю над очень простым приложением в SwiftUI, и мне удалось создать NavigationButton для моего Списка, который переносит меня в DetailViewController. В правом верхнем углу я хотел иметь кнопку «+», чтобы добавить вещи в мой список:

navigationBarItems(trailing:
                    NavigationButton(destination: DetailVC()) {
                        Image(systemName: "plus")
                            .resizable()
                            .frame(width: 20, height: 20)
                    }
)

Проблема в том, что когда я нажимаю на кнопку, она не переходит к моему DetailVC.

Я тоже пробовал это:

.navigationBarItems(trailing:
                    PresentationButton(destination: DetailVC()) {
                        Image(systemName: "plus")
                            .resizable()
                            .frame(width: 20, height: 20)
                    }
)

С этим кодом проблема в том, что он не отображает DetailVC с кнопкой «Назад», но он отображается снизу, и в моем ContentView нет способа вернуться назад

Какой правильный элемент поместить в панель навигации для правильной навигации?

Спасибо, Нико

1 Ответ

1 голос
/ 27 июня 2019

В SwiftUI вы используете NavigationButton для навигации по своему приложению.

Просто замените PresentationButton на NavigationButton:

.navigationBarItems(trailing:
    NavigationButton(destination: DetailVC()) {
        Image(systemName: "plus")
            .resizable()
            .frame(width: 20, height: 20)
    }
)

Apple Docs:

https://developer.apple.com/documentation/swiftui/navigationbutton (устарело)

РЕДАКТИРОВАТЬ:

NavigationButton устарело, поэтому его больше не следует использовать.

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

NavigationLink(destination: DetailVC()) { }

Потому что это совершенно новый код, и его пока нет в SwiftUI на наших Mac., выдает следующую ошибку:

Использование неразрешенного идентификатора 'NavigationLink';Вы имели в виду «NavigationView»?

Apple Docs:

https://developer.apple.com/documentation/swiftui/navigationlink

...