У меня есть представление SwiftUI с несколькими TextFields и @FocusState, привязанное к моей модели представления. Я хочу, чтобы первое поле автоматически получало фокус всякий раз, когда появляется представление (при возвращении из SecondView). Вот минимальный пример:
импорт SwiftUI
импорт Объединение
У меня есть представление SwiftUI с несколькими TextFields и @FocusState, привязанное к моей модели представления. Я хочу, чтобы первое поле автоматически получало фокус всякий раз, когда появляется представление (при возвращении из SecondView). Вот минимальный пример: импорт SwiftUI импорт Объединение [code]class MyViewModel: ObservableObject { enum Field: Hashable { case field1 case field2 case field3 }
@Published var field1: String = "" @Published var field2: String = "" @Published var field3: String = ""
@Published var focusedField: Field? = nil }
struct ContentView: View { @StateObject private var viewModel: MyViewModel @FocusState private var activeField: MyViewModel.Field?
NavigationLink("Go to Second View") { SecondView() } .padding(.top, 40) } .padding() .onAppear { // Attempt to focus the first field viewModel.focusedField = .field1 activeField = viewModel.focusedField } .onChange(of: activeField) { _, newValue in viewModel.focusedField = newValue } .onChange(of: viewModel.focusedField) { _, newValue in activeField = newValue } } } }
struct SecondView: View { var body: some View { VStack { Text("Second View") .font(.title) Text("Go back to see focus issue") .padding() } } } [/code] Что я делаю не так?