Swift - 控制自定义tableviewcell

时间:2017-01-25 01:48:41

标签: ios swift uitableview tableviewcell uistackview

我有一个自定义单元格,其堆栈视图包含多个按钮。我需要能够根据数据项显示每个按钮。例如,在一个单元格中,将出现三个按钮,在另外4个不同的按钮中,在另一个按钮中。单元格如下所示:

enter image description here

作为测试,我尝试使用以下代码设置按钮:

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
}

当我运行应用程序时,所有按钮都会显示。

如何控制显示哪些按钮?

1 个答案:

答案 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 }