将 IBOutlet 按钮放入数组时发出警告

Posted

技术标签:

【中文标题】将 IBOutlet 按钮放入数组时发出警告【英文标题】:Warning whilst putting IBOutlet buttons in an array 【发布时间】:2020-06-22 19:36:47 【问题描述】:

我试图将 9 个按钮放入一个数组中,但出现错误

不能在属性初始化器中使用实例成员“oneOne”;属性初始化器在“self”可用之前运行

每个按钮 9 次,这是我的代码。非常感谢任何帮助,我是 ios 开发的新手。

override func viewDidLoad() 
    super.viewDidLoad()

    // Do any additional setup after loading the view.


@IBOutlet var oneOne: UIButton!

@IBOutlet var twoOne: UIButton!

@IBOutlet var threeOne: UIButton!

@IBOutlet var oneTwo: UIButton!

@IBOutlet var twoTwo: UIButton!

@IBOutlet var threeTwo: UIButton!

@IBOutlet var oneThree: UIButton!

@IBOutlet var twoThree: UIButton!

@IBOutlet var threeThree: UIButton!

var allSpaces = [oneOne,twoOne,threeOne,oneTwo,twoTwo,threeTwo,oneThree,twoThree,threeThree]

/*
// MARK: - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
    // Get the new view controller using segue.destination.
    // Pass the selected object to the new view controller.

*/

谢谢

【问题讨论】:

或者,使用 IB 将这些按钮添加到 Outlet Collection。 行前添加lazy 【参考方案1】:

allSpaces 使用lazy var 声明或创建@IBOutlet 集合:

lazy var allSpaces = [oneOne,twoOne,threeOne,oneTwo,twoTwo,threeTwo,oneThree,twoThree,threeThree]

或:

@IBOutlet weak var buttons: [UIButton]! // Connect your outlets here.

【讨论】:

以上是关于将 IBOutlet 按钮放入数组时发出警告的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL顶点数组对象不记录VBO和IBO绑定

何时使用 IBOutlet?

g++对删除一个数组的代码而不删除另一个数组的代码发出警告。

当我连接 IBOutlet 时,IBAction 停止工作

归档我的应用程序时发出警告

快速创建一个对象的新实例并将其放入一个带有 TabBarView 按钮的数组中