为什么 :contentsOf 在将数组附加到 NavigationPath 对象时不起作用?

问题描述 投票:0回答:1

我有以下代码:

@Published var path:[Screen] = []

var launchScreens:[Screen] = [.someOtherView, .launch]

init() {
    path.append(contentsOf: launchScreens)
}

它按预期工作并将 launchScreens 附加到我的路径变量中。当我添加其他枚举值时,它们也会添加到 NavigationPath,并且当绑定到我的 NavigationStack 时,其他视图会按添加的顺序显示。

但是;如果我想使用 NavigationPath 而不是 [Screen](如下所示),我会收到一条错误消息,显示“调用中存在无关参数标签 'contentsOf:'”

@Published var path = NavigationPath()

var launchScreens:[Screen] = [.someOtherView, .launch]

init() {
    path.append(contentsOf: launchScreens)
}

如果我删除“contentsOf”,编译器不会抱怨,但屏幕无法正确加载。我想使用 NavigationPath,因为除了“屏幕”之外我还有不同的视图类型要添加。

如何将视图数组附加到 NavigationPath?

swiftui swiftui-navigationstack
1个回答
0
投票

NavigationPath
根本就没有这样的方法。您需要多次循环调用
append

你可以写这样的扩展

extension NavigationPath {
    mutating func append<S: Sequence>(contentsOf sequence: S) where S.Element: Hashable {
        for elem in sequence {
            append(elem)
        }
    }
}

您不应该将

NavigationPath
视为“集合”。它不符合任何收集协议,例如
RangeReplaceableCollection

© www.soinside.com 2019 - 2024. All rights reserved.