Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios SwiftUI NavigationLink导致推送,然后在完成后弹出,然后再次推送_Ios_Swift_Swiftui - Fatal编程技术网

Ios SwiftUI NavigationLink导致推送,然后在完成后弹出,然后再次推送

Ios SwiftUI NavigationLink导致推送,然后在完成后弹出,然后再次推送,ios,swift,swiftui,Ios,Swift,Swiftui,我的SwiftUI代码中有一些奇怪的动画效果。在我的工作表中,我的根视图SafariQuickTopicView代码如下 当我点击myhorizontalScroll中的任何按钮时,操作状态将更新为readyToTransition,视图将按下,然后在完成时,它将临时弹出到上一个视图,然后再次按下,直到我的新视图 知道它为什么这么做吗?我想这可能与我的SafariView有关,我已经从下面的代码中删除了它,因为它仍然在发生。该视图是一个符合UIViewRepresentable的SafariVi

我的SwiftUI代码中有一些奇怪的动画效果。在我的
工作表
中,我的根视图SafariQuickTopicView代码如下

当我点击my
horizontalScroll
中的任何按钮时,
操作状态将更新为
readyToTransition
,视图将按下,然后在完成时,它将临时弹出到上一个视图,然后再次按下,直到我的新
视图

知道它为什么这么做吗?我想这可能与我的
SafariView
有关,我已经从下面的代码中删除了它,因为它仍然在发生。该视图是一个符合
UIViewRepresentable
SafariViewController

谢谢


    @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)
        }
    }
}



@环境(\.presentationMode)变量presentationMode:绑定
@EnvironmentObject变量状态:AppState
@绑定变量:Bool
@状态变量actionState:actionState?=。设置
//马克:身体
var body:一些观点{
导航视图{
ZStack(对齐:。底部){
水平卷轴
}
.navigationBarTitle(“,显示模式:。内联)
.navigationBarItems(尾部:passButton)
}
}
//标记:-子视图
私有变量水平滚动:一些视图{
返回滚动视图(.horizontal,showsIndicators:false){
HStack{
ForEach(0..Void
变量topicNames:String{
topics.map{$0.name}.joined(分隔符:“,”)
}
var body:一些观点{
按钮(操作:{
self.actionState=.readyForTransition
}) {
文本(self.topicNames)
}
}
}

不能对每个导航链接使用相同的标记

将NavigationLink绑定到选择变量并提供该变量类型的标记。将选择值设置为标记将执行导航

如果使用同一标记,所有导航链接将同时执行导航。

这是未定义的行为。

不能对每个导航链接使用相同的标记

将NavigationLink绑定到选择变量并提供该变量类型的标记。将选择值设置为标记将执行导航

如果使用同一标记,所有导航链接将同时执行导航。

这是未定义的行为。

这是不可测试的,但正如我看到的,所有链接都有相同的标记,所以激活一个,你就激活了所有的标记…在这之后,一切都是不可预测的,可能会导致任何结果。每个链接的标记必须是唯一的,就像标识符一样-指定应该激活的链接。你在哪里看到标记需要是唯一的?我没有发现在苹果的docsIt中是不可测试的,但我看到你所有的链接都有相同的标签,所以激活一个,你就激活它们所有…在这之后,一切都是不可预测的,可能会导致任何结果。每个链接的标签必须是唯一的,就像标识符一样-指定应该激活哪个链接。你看到标签需要在哪里独特?我在苹果的文档中找不到