UITableViewCell具有未确定数量的项目

问题描述 投票:-1回答:2

我需要用一些按钮制作一个单元格。此按钮是问题的答案选项。但问题和按钮(答案)的数量没有确定,因为我从Alamofire获得这些数据。因此可能有2,3,6或任意数量的按钮。有没有办法以编程方式添加这些按钮,具体取决于(例如)数组中的项目数量,它们看起来很受限制?像堆栈视图?

提前致谢

swift uitableview cell uistackview
2个回答
1
投票

堆栈视图当然是将任意数量的视图约束到列(或行)中的一种方式。所以这听起来是最好的方式。


1
投票

这是一种偷偷摸摸的方法,但是如果你知道你将拥有的最大按钮数,你可以直接将它添加到故事板上的自定义原型单元格中,而无需以编程方式添加按钮。

解决方案(用Swift 4编写,但一般答案)

  1. 假设在任何问题中最多有8个答案,请在自定义原型单元格中创建8个按钮。根据需要添加约束,使它们看起来很漂亮!
  2. 请记住给您的单元格一个唯一的标识符(在我的例子中为“CustomCell”)。
  3. 转到文件>新文件> Cocoa Touch类>选择“UITableViewCell”子类并给它一个合适的名称(在我的例子中为qazxsw poi)。这将包含您的所有UI组件插座。
  4. 在故事板中选择原型单元格。导航到左侧的第三个图标,然后选择“CustomCellTableViewCell”作为您的班级。
  5. 控制+拖动您将要使用的按钮和字段的出口从故事板到新创建的CustomCellTableViewCell.swift。该文件现在看起来应该是这样的:
CustomCellTableViewCell.swift
  1. 接下来的几个步骤将在TableviewDataSource函数class CustomCellTableViewCell: UITableViewCell { @IBOutlet weak var question: UILabel! @IBOutlet weak var answerOne: UIButton! @IBOutlet weak var answerTwo: UIButton! ... ... @IBOutlet weak var answerEight: UIButton! } 中。请记住将TableviewCell转换为CustomCell:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
  1. 将所有答案按钮放在一个数组中
let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell") as! CustomCellTableViewCell
  1. 现在,您可以在循环中设置答案按钮文本,如下所示:
var answerButtons = [cell.answerButtonOne, cell.answerButtonTwo..., cell.answerButtonEight]
© www.soinside.com 2019 - 2024. All rights reserved.