ОК, не читал (или, возможно, читал перед редактированием), что вы используете xib. Если ViewController создан из xib с меткой, это будет правильным способом:
установить класс myView в xib здесь:

и затем подключите IBOutlet (удалите текущий из xib здесь:

и затем из кода).
Теперь myView.label.text = "some text"
должен работать без дальнейших проблем. Удачи!
Если вы создаете свое представление из кода, сделайте это следующим образом:
class UIExamples: UIViewController {
@IBOutlet private var myView: CustomView!
override func viewDidLoad() {
super.viewDidLoad()
// Assume makeViewFromNib returns the view [0] in the Nib.
myView = makeViewFromNib(nib: "\(CustomView.self)", owner: self) as! CustomView
myView.frame = view.bounds
view.addSubview(myView)
}
}
Поскольку у вас уже есть свойство, хранящее это представление в контроллере представления, копать не нужно внутри подпредставлений это будет работать так:
myView.label.text = "some text"
И причина того, что
customView = makeViewFromNib(nib: "\(CustomView.self)", owner: self) as! CustomView
customView.label.text = "some text"
не работает, в том, что это совершенно новый вид, который не был добавлен в ваш вид. Контроллеры (также кадр не был установлен, кстати). И поскольку вы изменили значение своего свойства customView, оно теперь не указывает на старый экземпляр представления, который присутствует в подпредставлениях (вы все еще можете видеть этот «старый», но не изменять его).
Но я очень рекомендую использовать указатель, созданный один раз, как правильный класс, чтобы избежать приведения. (Или создание представления непосредственно в xib / storyboard, иначе @IBOutlet
не требуется)