Так вот нет вещь, я объявляю свойство как это:При использовании переменной вычислен и Snapkit: Нет общего SuperView между видами
var aNameLabel: UILabel {
guard let foo = Applicant.sharedInstance.realName else {
return UILabel(text: "获取姓名失败", color: .whiteColor())
}
return UILabel(text: foo, color: .whiteColor())
}
И когда я пытаюсь добавить ограничение на aNameLabel после того как я сделал someView.addSubView(aNameLabel)
, приложение будет врезаться каждый раз, когда на это ограничение, добавив вещи, и говорит No common superview between views
Однако, когда я изменить переменную в константу пусть так:
let aNameLabel = UILabel(text: "Allen", color: .whiteColor())
Ограничение будет добавлено без каких-либо претензий. Кто-нибудь может мне помочь?
UPDATE
С помощью @par, я изменил свой код в этом:
var aNameLabel: UILabel = {
guard let foo = Applicant.sharedInstance.realName else {
return UILabel(text: "BAD", color: .whiteColor())
}
return UILabel(text: foo, color: .whiteColor())
}()
И тогда aNameLabel
всегда будет назначена со значением «BAD», в то время как на самом деле мой guard let
успешный. Как это исправить?
Благодаря Mate! Это действительно помогло! Но у меня все еще есть проблема. Пожалуйста, прочтите мое обновление. – Allen
Привет, я только что обновил его – Allen
Привет, я просто решил инициализировать значение в 'viewDidLoad()'. Проблема решена. Я просто хотел, чтобы мой 'viewDidLoad()' был проще и присвоить значения правой стороне, когда они объявляются. – Allen