foreach - 如何使用 SwiftUI 在 ScrollView 中选择一个项目?

标签 foreach swiftui scrollview

我想要完成的是有一个项目循环,我可以点击一个项目,一旦点击它就会以编程方式变大
这是我的代码和到目前为止的结果:

struct ContentView: View {
    
    @State var emojisArray = ["📚", "🎹", "🎯", "💻"]
    @State var selectedIndex = 0
    
    var body: some View {
        VStack {
            ScrollView(.horizontal) {
                
                HStack {
                    
                    ForEach(0..<emojisArray.count) { item in
                        
                        
                        emojiView(emoji: self.emojisArray[item],
                                  isSelected: item == self.selectedIndex ? true : false)
                            
                            .onTapGesture {
                                print (item)
                                self.selectedIndex = item
                                
                                
                        }
                        
                    }
                    
                }
                
                
            }
        .onAppear()
            .frame(height:160)
            
            VStack{
                Text("selcted item:")
                Text("\(self.emojisArray[self.selectedIndex])")
            }
            
        }
        
        
    }
}
emojiView 在哪里:
struct emojiView: View {
    
    var emoji : String
    @State var isSelected : Bool
    
    var body: some View {
        Text(emoji)
            .font(isSelected ? .system(size: 120) : .system(size: 45))
    }
}

我想问题是 ScrollView 不会重新加载自己
enter image description here

最佳答案

只需删除 @StateemojiView

struct emojiView: View {

    var emoji : String
    var isSelected : Bool      // << here !!

    var body: some View {
        Text(emoji)
            .font(isSelected ? .system(size: 120) : .system(size: 45))
    }
}
使用 Xcode 12/iOS 14 测试

关于foreach - 如何使用 SwiftUI 在 ScrollView 中选择一个项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63297201/

相关文章:

ios - 有没有办法在 SwiftUI 中仅针对某些 View 强制使用横向模式?

ios - SwiftUI - 如何停止 ScrollView 在其他 View 后面接收点击

ios - 如何使用 SwiftUI 将图像和标签添加到选项卡栏项目

java - 同时运行 2 个增强的 for 循环

javascript - 如何获取这段代码中目标元素的索引?

android - ScrollView > LinearLayout > PreferenceFragment 为零高度

android XML scrollview 和线性布局问题

reactjs - React Native 删除 Flatlist 中的底部空间

azure - Terraform 无法将 target_id 与 for_each 循环一起使用

r - 在R中使用foreach将内存使用量加倍