У меня в коде SwiftUI появляются странные эффекты анимации. В моем sheet
, который представлен, мой root код SafariQuickTopicView
приведен ниже.
Когда я нажимаю любую из кнопок в моем horizontalScroll
, actionState
обновляется до readyToTransition
, вид будет pu sh, затем по завершении он временно вернется к предыдущему виду, а затем снова pu sh навсегда для моего нового View
.
Есть идеи, зачем он это делает? Я подумал, что это может быть связано с моим SafariView
, который я удалил из кода ниже, поскольку это все еще происходит. Это изображение SafariViewController
, которое соответствует UIViewRepresentable
, чего бы оно ни стоило.
Спасибо
@Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>
@EnvironmentObject var state: AppState
@Binding var articleDisplayed: Bool
@State var actionState: ActionState? = .setup
// MARK: - Body
var body: some View {
NavigationView {
ZStack(alignment: .bottom) {
horizontalScroll
}
.navigationBarTitle("", displayMode: .inline)
.navigationBarItems(trailing: passButton)
}
}
// MARK: - Subviews
private var horizontalScroll: some View {
return ScrollView(.horizontal, showsIndicators: false) {
HStack {
ForEach(0..<self.multiTopics.endIndex) { i in
NavigationLink(destination: self.tagView, tag: .readyForTransition, selection: self.$actionState) {
MultiTopicView(
articleDisplayed: self.$articleDisplayed,
actionState: self.$actionState,
topics: self.multiTopics[i],
setTopics: { self.topicsWereSet(topics: self.multiTopics[i]) }
)
}
}
NavigationLink(destination: topicsView) {
Text("More Topics")
}
}
.padding(.horizontal, 12)
.frame(maxHeight: 55)
}
.background(Color.white)
.padding(.top, -11)
}
struct MultiTopicView: View {
@Binding var articleDisplayed: Bool
@Binding var actionState: ActionState?
let topics: [Topic]
let setTopics: () -> Void
var topicNames: String {
topics.map { $0.name }.joined(separator: ", ")
}
var body: some View {
Button(action: {
self.actionState = .readyForTransition
}) {
Text(self.topicNames)
}
}
}