在我下面的 swift 代碼中,它使用了一個 forEach 陳述句。問題是該集合中的某些專案無法進行文本點亮。例如,在 uiimageview 中不可能進行文本對齊。所以我嘗試撰寫一些可能有效但確實發生編譯錯誤的代碼。您可以在下面的評論塊中看到我嘗試撰寫的代碼。
override func viewDidLoad() {
super.viewDidLoad()
[player1Score,player2Score,clearBtn,player1UpBTN,player1DownBtn,player2UpBTN,player2DownBtn,play1Lbl, play2Lbl,play1text,play2text,resetBtn,resetBtn,GameLabel,GameText,gameIncrease,gameDecrease,submit].forEach{
$0.translatesAutoresizingMaskIntoConstraints = false
$0.layer.borderWidth = 1
view.addSubview($0)
$0.backgroundColor = UIColor(
red: .random(in: 0.0...1),
green: .random(in: 0.0...1),
blue: .random(in: 0.0...1),
alpha: 1
//part of cocde I tried that does not work
if $0 is = UITextField {
$0.textalignment = .cent
}
)
}
uj5u.com熱心網友回復:
首先,您在呼叫 UIColor 時缺少一個結束括號。
接下來,你的 if 陳述句。由于您的物件陣列具有不同的型別,因此該陣列的型別為Array<Any>。您的if $0 is UITextField意思是“如果正在迭代的當前物件的型別為 ,則僅執行此 if 陳述句的主體UITextField。然而,編譯器不會將其$0視為該型別。
if $0 is <type>我將使用if let可選系結來創建型別為 的新區域變數,而不是使用UITextField:
override func viewDidLoad() {
super.viewDidLoad()
[player1Score,player2Score,clearBtn,player1UpBTN,player1DownBtn,player2UpBTN,player2DownBtn,play1Lbl, play2Lbl,play1text,play2text,resetBtn,resetBtn,GameLabel,GameText,gameIncrease,gameDecrease,submit].forEach{
$0.translatesAutoresizingMaskIntoConstraints = false
$0.layer.borderWidth = 1
view.addSubview($0)
$0.backgroundColor = UIColor(
red: .random(in: 0.0...1),
green: .random(in: 0.0...1),
blue: .random(in: 0.0...1),
alpha: 1
)
if let textfield = $0 as? UITextField {
// if the if let succeeds, `textField` will be
// a var of the correct type
textfield.textalignment = .cent
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/390126.html
上一篇:自定義python包中物件的范圍
下一篇:C 訪問靜態分配物件的成員
