ios - TableView 单元格中的堆栈 View

标签 ios swift uitableview uistackview

我正在尝试以编程方式在 TableView 单元格内实现堆栈 View ,并向其添加标签和按钮,如下所示:

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
    let dict = self.char[indexPath.row]
    let stackView = UIStackView()
    stackView.translatesAutoresizingMaskIntoConstraints = false
    stackView.axis = .horizontal
    stackView.spacing = 20
    stackView.distribution = .fillProportionally
    stackView.alignment = .leading
    cell.addSubview(stackView)
    NSLayoutConstraint.activate([
        stackView.leadingAnchor.constraint(equalTo: cell.leadingAnchor),
        stackView.trailingAnchor.constraint(equalTo: cell.trailingAnchor)
        ])
    let bornLabel = UILabel()
    bornLabel.textColor = UIColor.blue
    let bornLabelValue = UILabel()
    bornLabelValue.textColor = UIColor.blue
    stackView.addArrangedSubview(bornLabel)
    stackView.addArrangedSubview(bornLabelValue)
    for (key, value) in dict {
        bornLabel.text = key
        bornLabelValue.text = value
        if key == "Height" {
            let button = UIButton(type: .roundedRect)
            button.setTitle("English", for: .normal)
            button.setTitleColor(.blue, for: .normal)
         stackView.addArrangedSubview(button)
        }
    }
    return cell
}

问题是每次调用 tableView.reloadData() 时,都会在现有单元格之上添加另一个单元格,每个标签的值都不同,具体取决于提供给 tableView 的数据。或者它可能不会每次都生成另一个单元格,而只是添加另一个堆栈 View 。我不确定。我该如何解决这个问题?

谢谢

最佳答案

问题是您得到的是“可重复使用的单元格”,这意味着前几次它将是一个空单元格,然后它将成为您已添加的单元格一个 UIStackView

您应该通过Storyboard 或新的XIB 文件创建一个新的原型(prototype)单元,在其中添加UIStackView,然后仅在您的 cellForRowAt indexPath: 实现中配置该 stackView。

或者您可以在技术上在 stackView 中设置一个标签,然后检查该标签的单元格……但请不要这样做。

关于ios - TableView 单元格中的堆栈 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39660325/

相关文章:

ios - 当我将 CALayer I 添加到自定义 UIView 时,我隐藏了一个子 UIImageView

ios - 如何获取 AppIcon 的 UIImage?

ios - 在 UITableView 滚动时在 MKMapView 上放置图钉,从特定屏幕位置的单元格获取坐标。制作引脚 "dance."

swift - 如何使用 XCTAssert 验证类方法是否被调用?

ios - 如何在不 Hacky 的情况下在 UITableViewCells 之间添加边距

objective-c - 如何调用pickerView : didSelectRow: inComponent: without user interaction?

ios - 在所需的初始化中从 NSCoder 获取属性(编码器 aDecoder : NSCoder)

ios - Xcode 7 Playground 错误 : invalid context 0x0

ios - 连接到自定义类时单元格消失

ios - 辅助功能:将焦点移至 UITableViewController 中 tableView 的第一个单元格