Как изменить текст метки с другого контроллера представления и сохранить его с основными данными - PullRequest
0 голосов
/ 01 мая 2020

У меня есть вход (UITextfied), и я хочу, чтобы данные в нем изменились DesA в Моем другом ViewController

Мой первый ViewController: Facial (где метка DesA) - Мой второй ViewController: ServiceAChangeViewController (где находится кнопка ввода и) (извините за странные имена)

По сути, я хочу написать текст в моем UITextField, затем нажать кнопку, которая сохраняет его с использованием основных данных, а затем изменяет DesA метка в моем контроллере первого вида

Я следовал некоторым учебникам на YouTube и написал этот код

Второй ViewController (ServiceAChangeViewController): var score = Facial (nibName: nil, bundle: nil). TitleChange var OutputLabel = Facial (nibName: nil, bundle: nil) .DesA

  ```  @IBAction func saveData(_ sender: Any) {

        let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
        let entity = NSEntityDescription.entity(forEntityName: "Entity", in: context)
        let newEntity = NSManagedObject(entity: entity!, insertInto: context)

        newEntity.setValue(score, forKey: "titleA")


        do {
            try context.save()
            print("saved")
        } catch {

            print("Failed savign")

        }

    }

    func getData() {

        let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
        let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Entity")
        request.returnsObjectsAsFaults = false
        do {

            if let result = try? context.fetch(request) as? [NSManagedObject] {
                for data in result  {
                    score = data.value(forKey: "titleA") as! String
                }


        } else {

            print("Failed")
        }

    }
    }


    @IBAction func SubmitAnswer(_ sender: Any) {
        OutputLabel?.text = score
        score = String(InputA.text!)

    }






    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
            getData()
        OutputLabel?.text = score

    }```

Первый ViewController (Facial):

    @IBOutlet var TitleA: UILabel!
    var TitleChange = String()










    override func viewDidAppear(_ animated: Bool) {







 }

Но когда я запускаю приложение и вводю текст кажется, это не меняет и не сохраняет.

1 Ответ

1 голос
/ 01 мая 2020

попробуйте это для сохранения основного объекта данных, вы также можете использовать "didset" для переменной

    let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
let newInfo = Entity(entity: Entity.entity(), insertInto: context)

// do something with entity

do {
try context.save() } catch let error as NSError {
print("Error... \(error), \(error)")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...