使用情节提要时,您可以在其上绘制2个按钮,然后通过创建添加然后将它们添加到数组中:
@IBOutlet private var cardButtons: [UIButton]!
此出口集合现在是两个按钮的数组,在viewDidLoad之前作为变量加载。
如何在不使用故事板的情况下以编程方式创建此按钮数组?
我试过这个,但它给了我一个声明错误:
class ViewController: UIViewController {
var cardButtons = [CardView]()
let cardOne = CardView()
cardButtons.append(cardOne)
...rest of viewController standard class
}
答案 0 :(得分:1)
在ViewController的生命周期中有几个时间点,您可能需要填充cardButtons数组。例如,您可以在viewDidLoad中执行此操作。
class ViewController: UIViewController {
var cardButtons = [CardView]()
override func viewDidLoad() {
super.viewDidLoad()
let cardOne = CardView()
cardButtons.append(cardOne)
}
}
请记住,每次将View加载到内存时都会调用viewDidLoad。在我的示例中,每次都会重新创建cardOne
。为避免这种情况,您可以将cardOne
存储在实例var中,就像最初一样。
class ViewController: UIViewController {
var cardButtons = [CardView]()
let cardOne = CardView()
override func viewDidLoad() {
super.viewDidLoad()
cardButtons.append(cardOne)
}
}
正如我所说,在ViewController的生命周期中有几个时间点你可能想要填充cardButtons数组。其他功能可能是:
viewDidAppear()
,每当视图出现时填充该区域。init()
,如果您根本不使用故事板。答案 1 :(得分:0)
这是我最终做的事情:
class ViewController: UIViewController {
let uiView: UI = {
var ui:UI = UI()
let cardOne = CardView()
let cardTwo = CardView()
ui.addButton(item: cardOne)
ui.addButton(item: cardTwo)
return ui
}()
...rest of viewController standard class
}
class UI {
var cardButtons = [CardView]()
func addButton(button: CardView){
cardButtons.append(button)
}
}