我有以下代码:
@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?
NavigationPath
根本就没有这样的方法。您需要多次循环调用 append
。
你可以写这样的扩展
extension NavigationPath {
mutating func append<S: Sequence>(contentsOf sequence: S) where S.Element: Hashable {
for elem in sequence {
append(elem)
}
}
}
您不应该将
NavigationPath
视为“集合”。它不符合任何收集协议,例如RangeReplaceableCollection
。