#swiftui
Вопрос:
Впервые задаю вопрос. Извините, если я груб.
Я хочу создать механизм, который предотвращает нажатие кнопки, когда в текстовом поле нет ввода. Напротив, я хочу включить кнопку, если есть ввод.
Я написал это так, но я получаю сообщение об ошибке «Не удается найти «$ task» в области видимости».
Ты знаешь, почему?
import SwiftUI import CoreData struct TFenableView: View { @ObservedObject var task: Task @Environment(.managedObjectContext) var viewContext @Environment(.presentationMode) var presentation var taskNameIsValid: Bool { return !task.name.isEmpty } var body: some View { Form { TextField("Edit TaskName", text: $task.name) .textFieldStyle(RoundedBorderTextFieldStyle()) .padding() Button(action: { Task.save(in: self.viewContext) self.presentation.wrappedValue.dismiss() }) { Text("Update!") }.padding() .disabled(!taskNameIsValid) } .navigationBarTitle("Editing screen") .navigationBarBackButtonHidden(!taskNameIsValid) } } struct TFenableVieew_Previews: PreviewProvider { static var previews: some View { TFenableView() } }
Комментарии:
1. Примечание
Task
— это уже имя структуры swift 5.5. Можете ли вы показать код для вашегоTask class
. Кроме того, у вас есть опечатка,TFenableVieew_Previews
и выTFenableView(task: Task())
в этом упускаете.2. Работает для меня, когда я вносю изменения, чтобы заставить его компилироваться и работать. В случае ошибки компилятора попробуйте очистить (
command shift K
) и перестроить проект.