の間には、共通のスーパーをだからここことだ、私はこのようなプロパティを宣言しています:コンピュー変数とSnapkitを使用しない場合:ビュー
var aNameLabel: UILabel {
guard let foo = Applicant.sharedInstance.realName else {
return UILabel(text: "获取姓名失败", color: .whiteColor())
}
return UILabel(text: foo, color: .whiteColor())
}
そして私は、私はsomeView.addSubView(aNameLabel)
をした後aNameLabelに制約を追加しようとすると、
let aNameLabel = UILabel(text: "Allen", color: .whiteColor())
No common superview between views
を言うだろう
制約が追加され、苦情はありません。誰かがこれで私を助けることができますか? @parの助けを借りて
UPDATE
、私はこれに私のコードを変更しました:
var aNameLabel: UILabel = {
guard let foo = Applicant.sharedInstance.realName else {
return UILabel(text: "BAD", color: .whiteColor())
}
return UILabel(text: foo, color: .whiteColor())
}()
ながら実際に私のguard let
そしてaNameLabel
は常に、値が「BAD」が割り当てられます成功です。これをどうやって解決するのですか?
おかげでメイト:彼らは
viewDidLoad()
は、例えば、呼び出されたとき、あなたは後で、実際の景色にそれらを設定することができ、初期化の要件を満たしているinit()
によってnil
に設定されます!これは本当に助けになった!しかし、私はまだこれについて問題があります。私の質問の更新をお読みください。 – Allenちょっと私はそれを更新しました – Allen
こんにちは、私はちょうど 'viewDidLoad()'の値を初期化することを選択しました。問題は解決しました。私はちょうど私の 'viewDidLoad()'がより簡単で、変数が宣言されているときに変数rightに代入したいと思っていました。 – Allen