[英]SwiftUI: Getting array of string from another view
我有一個名為 TagView 的視圖,它使用LazyHGrid
創建標簽列表我試圖獲取從 web 服務加載的標簽數組並將其從主視圖傳遞給TagView
。 這是代碼:
struct TagsView: View {
var tags: Array<String>
private var layout = [GridItem(.fixed(30))]
var body: some View {
HStack {
Spacer()
GeometryReader { geo in
ScrollView(.horizontal, showsIndicators: false) {
LazyHGrid(rows: layout) {
ForEach(tags, id: \.self) {
Button("\($0)") {
}
.font(.callout.bold())
}
}
}
}
創建變量后: var tags: Array<String>
我需要從主視圖中獲取數組,如下所示:
struct MainView: View {
var model: Model
var body: some View {
VStack {
TagsView(tags: model.tags)
}
}
}
但我收到此錯誤:
由於“私人”保護級別,無法訪問 TagsView 的初始化程序
我嘗試了@Binding
,但仍然沒有運氣,任何幫助都會很棒!
此錯誤的原因是合成的init
被標記為私有,因為其中一個屬性是私有的。 要解決此問題,請刪除私有或添加:
init(tags: Array<String>) {
self.tags = tags
}
只需將layout
更改為let
常量:
private let layout = [GridItem(.fixed(30))]
那么自動生成的 init 將不是私有的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.