Как выбрать элемент в ScrollView с помощью SwiftUI? - PullRequest
1 голос
/ 07 августа 2020

то, что я пытаюсь выполнить sh, - это все oop элементов, которые я могу нажать, и он становится больше программно после нажатия

вот мой код и мои результаты на данный момент:

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 не перезагружается

введите описание изображения здесь

1 Ответ

1 голос
/ 07 августа 2020

Просто удалите @State в emojiView

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...