Получить объект, отображаемый в центре экрана для LazyHStack SwiftUI

В приложении для планирования питания пользователь прокручивает горизонтальный список приемов пищи и выбирает одно блюдо на каждый день.

У меня проблема, когда блюдо, отображаемое визуально, не является блюдом, выбранным программно.

Я использую LazyHStack с идеей, что за раз будет загружаться / отображаться только одно блюдо, и я получаю объект с помощью .onAppear ()

Проблема с этим подходом иногда заключается в том, что пользователь прокручивает слишком далеко, загружается следующее блюдо, и поэтому то, что отображается визуально, не совпадает с тем, что я получаю с помощью .onAppear (). Я попытался добавить больше места между элементами, чтобы предотвратить проблему, но, похоже, это не помогает.

Мой вопрос: есть ли способ захватить объект в поле зрения, и в моем случае сохранить его как объект, пока следующий объект не пройдет центральный экран?

Ниже приведен снимок экрана и код, над которым я сейчас работаю. Спасибо за любую помощь!

                      ScrollView(.horizontal) {
                    LazyHStack(spacing: 25) {
                        ForEach(getMenus.mondayMenuItems) { menuItems in
                            
                            NavigationLink(
                                destination: DetailMenuItemView(menuItem: menuItems)) {
                                MenuItemView(menuItem: menuItems)
                                    .onAppear { self.monItem = menuItems}
                                    .padding([.leading, .trailing])
                            }
                        }
                    }
                }

0 ответов

Другие вопросы по тегам