我需要用一些按钮制作一个单元格。此按钮是问题的答案选项。但是问题和按钮(答案)的数量不确定,因为我从Alamofire获得了这些数据。因此,可能有2、3、6或任意数量的按钮。 是否有一种方法可以根据(例如)数组中的项目数以编程的方式添加这些按钮,使其看起来受到约束?像堆栈视图一样?
预先感谢
答案 0 :(得分:1)
堆栈视图无疑是将任意数量的视图约束到列(或行)中的一种方法。因此,这听起来是最好的方法。
答案 1 :(得分:1)
这是一种偷偷摸摸的方法,但是,如果您知道最大数量的按钮,则可以将其直接添加到情节提要上的自定义原型单元中,而无需添加按钮以编程方式。
解决方案(在Swift 4中编写,但有一个一般性的答案)
CustomCellTableViewCell.swift
)。这将包含您所有的UI组件出口。CustomCellTableViewCell.swift
。该文件现在应如下所示:class CustomCellTableViewCell: UITableViewCell {
@IBOutlet weak var question: UILabel!
@IBOutlet weak var answerOne: UIButton!
@IBOutlet weak var answerTwo: UIButton!
...
...
@IBOutlet weak var answerEight: UIButton!
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
中。记住将TableviewCell强制转换为CustomCell:let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell") as! CustomCellTableViewCell
var answerButtons = [cell.answerButtonOne, cell.answerButtonTwo..., cell.answerButtonEight]
for i in 0..<answerButtons.count {
if i < data[indexPath.row].answers.count { // if the answer exists, add it to the button
cell.answerButton[i].isHidden = false // show button if answer exists
cell.answerButton[i].setTitle(data[indexPath.row], for: .normal)
} else {
cell.answerButton[i].isHidden = true // hide that button
}
}