Выбор отображения одного или другого ScrollView блокирует второйIOS

Программируем под IOS
Ответить
Anonymous
 Выбор отображения одного или другого ScrollView блокирует второй

Сообщение Anonymous »

У меня возникла особая проблема: при использовании двух элементов ScrollView и попытке отобразить один или другой по условию второй никогда не работает.
Проще говоря: мне нужно отобразить список, но если выполняется определенное действие, мне нужно вместо этого отобразить второй другой список (без фильтрации, совершенно другой тип данных и ячейки). Когда условие отображения второго ScrollView активно, я вижу второй ScrollView. Но:
Я вообще не могу прокручивать, пока не вернусь к первому ScrollView.
Точно так же кнопки внутри второго ScrollView не работают
Кажется, что взаимодействие с пользователем отключено во втором режиме прокрутки. Я попытался инвертировать условие, чтобы увидеть, есть ли проблема со вторым макетом, но проблема остается: всегда представление прокрутки, идущее вторым, не работает.
Вот текущий код для представления:

Код: Выделить всё

struct SearchView: View {

@StateObject var viewModel: SearchViewModel

var body: some View {
ZStack(alignment: .top) {
ScrollView {
LazyVGrid(columns: Array(repeating: GridItem(.flexible()), count: 2), spacing: 16) {
ForEach(viewModel.categories, id: \.id) { category in
Button {
viewModel.categoryTapped(category: category)
} label: {
CategoryCellView(category: category)
}
}
}
.padding(.horizontal, 16)
}
.opacity(viewModel.items.isEmpty ? 1 : 0)

ScrollView {
LazyVStack {
ForEach(viewModel.items) { item in
Button {
viewModel.openItem(item: item)
} label: {
cell(for: item)
}
}
}
.padding(.horizontal, 16)
}
.opacity(viewModel.items.isEmpty ? 0 : 1)
}
.onAppear {
viewModel.load()
}
}
}
В этой версии я пытаюсь отобразить оба элемента ScrollView, но скрыть один с помощью непрозрачности, но это потому, что я уже много чего пробовал. Тот же результат с условием if/else, определяющим, какие представления прокрутки отображаются, тот же результат с установкой условия if/else внутри уникального ScrollView, тот же результат с установкой if/else внутри LazyVGrid.
Если у кого-то есть идеи, буду рад! спасибо

Подробнее здесь: https://stackoverflow.com/questions/786 ... second-one
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»