Я новичок в SwiftUI (как и большинство из нас)
Я пытаюсь реализовать автозаполнение TextField с местами Google, у меня работает базовая реализация c, но нажатия кнопок не отображаются. t работает над моим списком "предложений".
Код, размещенный ниже
struct CreateVenueView: View {
@ObservedObject private var viewModel: CreateVenueViewModel = CreateVenueViewModel()
@State private var selectedSport = 0 {
willSet(newValue) {
print(newValue)
}
}
var body: some View {
ZStack {
Form {
Picker(selection: $selectedSport, label: Text("Sport")) {
ForEach(Sport.all()) { sport in
Text(sport.value.capitalized)
}
}
.padding(.vertical, 5)
TextField("Venue name", text: $viewModel.venueName)
.padding(.vertical, 5)
TextField("Address", text: $viewModel.typedAddress)
.padding(.vertical, 5)
TextField("Venue detail", text: $viewModel.selectedSport)
.padding(.vertical, 5)
}
if !viewModel.addresses.isEmpty {
VStack(alignment: .leading) {
List {
ForEach(viewModel.addresses) { address in
Button(action: {
self.viewModel.selectedAddress = address
}) {
Text("\(address.displayAddress())")
}
}
}
.frame(height: CGFloat(viewModel.addresses.count * 50))
Spacer()
}
.padding()
.offset(y: 120)
.shadow(radius: 5)
.cornerRadius(5)
}
}
.accentColor(Color.Palette.accent)
.navigationBarTitle("Add Venue")
}
}
Как вы можете видеть, когда в моей модели просмотра доступны "адреса", мы показываем список предложений. gif прилагаются.
![Demo](https://i.stack.imgur.com/Aco67.gif)
Однако действия кнопки не выполняются для всех элементов, первые два элемента регистрируют щелчки, как вы можете видеть из выделения, когда выбран второй вариант, но когда под вторым параметром выбран какой-либо элемент, вы увидите, что взаимодействие происходит с формой.
Когда у меня нет смещения или проставки, список отображается в нижней части экрана, значительно ниже формы, и все действия кнопок запускаются. Поэтому я предполагаю, что есть проблема с формой, перехватывающей события клика, в отличие от моего списка предложений.
У кого-нибудь есть идея, что я мог бы сделать, чтобы решить эту проблему?
Спасибо