我有一个自定义单元格,其堆栈视图包含多个按钮。我需要能够根据数据项显示每个按钮。例如,在一个单元格中,将出现三个按钮,在另外4个不同的按钮中,在另一个按钮中。单元格如下所示:
作为测试,我尝试使用以下代码设置按钮:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "doctrineCell", for: indexPath) as! DoctrineCell
let doctrine = doctrines[indexPath.row]
cell.doctrineLabel.text = doctrine.doctrineText!
cell.bofmButton.isHidden = true
cell.otButton.isHidden = true
cell.ntButton.isHidden = true
cell.ldaButton.isHidden = true
cell.ldpButton.isHidden = true
cell.pbutton.isHidden = true
cell.jsbutton.isHidden = true
cell.allButton.isHidden = true
cell.ldaButton.isHidden = false
cell.ldpButton.isHidden = false
cell.pbutton.isHidden = false
return cell
}
当我运行应用程序时,所有按钮都会显示。
如何控制显示哪些按钮?
答案 0 :(得分:-3)
而不是按住Ctrl +拖动来创建插座,您可以按住Ctrl键并拖动以创建插座集合,这是一个按钮数组。现在,您可以在for循环中访问它们。
cell.buttons.forEach {$0.isHidden = true}
cell.buttons[8].isHidden = false
cell.buttons[9].isHidden = false
cell.buttons[10].isHidden = false
无论出于何种原因,接口构建器不保证数组中按钮的顺序,因此在awakeFromNib中按x顺序对数组进行排序:
cell.buttons.sort {$0.0.frame.origin.x < $0.1.frame.origin.x }