首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加LazyVGrid后预览崩溃

添加LazyVGrid后预览崩溃
EN

Stack Overflow用户
提问于 2021-05-29 18:00:48
回答 1查看 283关注 0票数 0

我正在学习斯坦福大学的CS193p,一切都进行得很顺利,直到把LazyVGrid换成HStack为止。

我和一位教授核对了我的代码,它们是一样的。但是,我的代码中令人困惑的部分是,当我的emojiCount =4时,预览工作得很好,我可以使用LazyVGrid,但是当我将emojiCount值更改超过4,比如5或24时,它就会立即崩溃。

坠机信息是:

诊断

这是我的密码:

代码语言:javascript
复制
import SwiftUI

struct ContentView: View {
    var emojis = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""]
   @State var emojiCount = 4
    
    var body: some View {
        VStack {
            LazyVGrid(columns:[GridItem(),GridItem(),GridItem()]) {
                ForEach(emojis[0..<emojiCount], id: \.self) { emoji in
                    CardView(content: emoji)
                }
            }
            .foregroundColor(.red)
            Spacer()
            HStack {
                remove
                Spacer()
                add
            }
            .font(.largeTitle)
            .padding(.horizontal)
        }
        .padding(.horizontal)
    }
    
    var remove: some View {
        Button {
            if emojiCount > 2 {
                emojiCount -= 1
            }
        } label: {
            Image(systemName:"minus.circle")
            }
    }
    
    var add: some View {
        Button {
            if emojiCount < emojis.count {
                emojiCount += 1
            }
        } label: {
            Image(systemName:"plus.circle")
            }
    }
}


struct CardView: View {
    var content: String
    @State var isFaceUp: Bool = true
    
    var body: some View {
        ZStack {
            let shape = RoundedRectangle(cornerRadius: 20)
            if isFaceUp {
                shape.fill().foregroundColor(.white)
                shape.stroke(lineWidth: 3)
                Text(content).font(.largeTitle)
            } else {
                shape.fill()
            }
        }
        .onTapGesture {
            isFaceUp = !isFaceUp
        }
    }
}

我一整晚都想弄清楚,但我还是不知道我的代码出了什么问题。非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-29 18:19:47

在模拟器中运行代码,您将看到错误。

致命错误:每个布局项只能发生一次。

这就产生了表情符号。你有很多,但只有4种不同的类型。在由\.self引用项的循环中,您负责确保项是唯一的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67754403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档