Я использую SwfitUI в своем проекте, и у меня есть NavigationView и список. Я нажимаю на ячейку после открытия подробного вида и нажимаю кнопку навигации назад. Я хочу удалить представление (это структура, в SwiftUI) после нажатия кнопки навигации назад. Потому что, если я снова нажму ту же ячейку или кнопку, это не инициализирует новое представление, оно показывает старое представление. Я хочу сделать refre sh эту точку зрения. Как это сделать?
Моя структура FirstView:
struct FirstView: View {
@ObservedObject var viewModel: FirstViewModel
var body: some View {
List(self.viewModel.objects, id: \.id) { object in
ZStack {
DetailViewCell(object: object)
NavigationLink(destination: DetailViewBuilder.make(object)) {
EmptyView()
}.buttonStyle(PlainButtonStyle())
}
}
}
}
Моя структура DetailView:
struct DetailView: View {
@ObservedObject var viewModel: DetailViewModel
var body: some View {
ZStack(alignment: .top) {
Color.mainBackground.edgesIgnoringSafeArea(.all)
VStack {
ZStack {
Image("Square")
Image(self.viewModel.currentImage)
}
Text(self.viewModel.currentText)
.padding()
.frame(alignment: .center)
.minimumScaleFactor(0.1)
Spacer()
Button(action: {
self.viewModel.pressedPlayOrPauseButton()
}, label: {
Image(self.viewModel.isPlaying ? "Pause" : "Play").foregroundColor(Color("Orange"))
}).padding()
}
}
}
}
Прежде всего, я go до деталей нажав на ячейку в FirstView. Затем я возвращаюсь с кнопкой возврата. Я нажимаю на ячейку еще раз, чтобы узнать подробности go, но новый вид не открывается. Он показывает старый вид.
Прежде чем я забуду, мой класс Builder:
final class DetailViewBuilder {
static func make(object: Something) -> DetailView {
let viewModel = DetailViewModel(object: object)
let view = DetailView(viewModel: viewModel)
return view
}
}
Примечание. Если я буду использовать Sheet Presented, он работает. Это создает новый вид. Но я хочу использовать NavigationLink. Спасибо.