如何在 SwiftUI 上创建一个空的“视图”数组?

Posted

技术标签:

【中文标题】如何在 SwiftUI 上创建一个空的“视图”数组?【英文标题】:How create an empty array of "View" on SwiftUI? 【发布时间】:2020-09-05 09:28:25 【问题描述】:

我想在 SwiftUI 中有一个空的“视图”数组,稍后再填充。

当我这样写时:

 @State var pages: [View]

XCode 用这个对我大喊:

Protocol 'View' can only be used as a generic constraint because it has Self or associated type requirements

【问题讨论】:

【参考方案1】:

我强烈不建议这样做,但如果你愿意,那么有两种可能的选择

    要么声明为视图类型擦除
@State var pages = [AnyView]()
    或您特定的具体页面类型,假设它是PageView
@State var pages = [PageView]()

【讨论】:

for option1 当我想填充 pages 变量时出现此错误:无法将“YourView.page1.Type”类型的值转换为预期的元素类型“Array.ArrayLiteralElement”(又名“任何视图') Option2 也是不可能的,我想使用确切的 View 东西,一个完整的页面 AnyView 的用途是什么...hackingwithswift.com/quick-start/swiftui/… 啊哈!我应该将我的最终观点投射到 AnyView!

以上是关于如何在 SwiftUI 上创建一个空的“视图”数组?的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI如何在更新已发布数组中的对象而不是数组本身时更新视图

有啥方法可以在 SwiftUI 中使用 @ViewBuilder 创建/提取视图数组

如何将字符串数组从视图模型传递到 swiftUI 中播放歌曲

NavigationLink SwiftUI 中的三元运算符

如何从结构视图数组中提取状态? SwiftUI

SwiftUI:如何在另一个视图中更新传递的数组项