我正在完成一个示例项目。
我正在尝试计算ViewControllers视图中的UIButton数量,然后将它们添加到数组中,以便我可以以编程方式访问它们,即更改颜色/标题等。
import UIKit
class ViewController: UIViewController
{
var cardButtons: [UIButton]!
let cardForegroundColour = UIColor.white
let cardBackgroundColour = UIColor.orange
lazy var game = ConcentrationGame(numberOfPairsOfCards: (self.cardButtons.count + 1) / 2)
override func viewDidLoad()
{
for case let button as UIButton in self.view.subviews
{
button.backgroundColor = cardForegroundColour
self.cardButtons.append(button)
}
print ("number of buttons /(self.cardButtons.count)")
}
因此,它构建正常,但在附加行崩溃:
线程1:致命错误:在展开时出乎意料地发现nil 可选值
现在,如果我设置了断点,button
对象就是一个有效的对象。
我可以更改所有颜色,但我无法将它们添加到cardButtons
数组中。
我知道我可以将cardButtons
设置为Collection Outlet,并手动连接它们,但我希望能够更改UI并且代码只是适应,所以添加更多按钮,或删除一些,不不要更改代码或要求手动重新布线。
我意识到问题在于我对选项的理解,但我认为开头的!
和具体的对象button
是正确的方法。
答案 0 :(得分:1)
问题是cardButtons
是nil
。
将此行var cardButtons: [UIButton]!
更改为var cardButtons = [UIButton]()