Как я могу изменить UILabel.text из другого быстрого файла? - PullRequest
0 голосов
/ 02 августа 2020

Я получаю ошибку нулевого значения, когда пытаюсь изменить UIlabel из другого быстрого файла, отличного от ViewController.

//ViewController.swift

import UIKit

class MainViewController: UIViewController {

  @IBOutlet weak var myLabel: UILabel?

  override func viewDidLoad() {
        super.viewDidLoad()

    myLabel?.text = "foo"
    }
  func label(stringVal: String? = nil){
      myLabel?.text = stringVal!
    }
}

//Source.swift

//Do working here and get a string value from struct
// I saved that string in stringValue

let VC = MainViewController()
VC.label(stringVal: stringValue!)

Пожалуйста, дайте мне знать, что я делаю не так.

1 Ответ

0 голосов
/ 02 августа 2020

Элементы управления контроллером представления не создаются в конструкторе, ожидается, что он будет нулевым. Вам нужно показать этот контроллер представления, прежде чем запускать метод label и избежать ошибки.

Допустимым вариантом будет установка внутренней переменной в конструкторе и в viewDidLoad, когда метка уже создана , вы можете сделать

myLabel.text = stringValue // stringValue is comes from constructor.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...