作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 build 一个 iOS
使用 UITableView
的应用程序显示为接下来的 7 天安排的事件。
类(class)ThisWeekViewController
根据给定的日期获取保存在数据库中的事件,并返回一个包含该日期所有事件名称的字符串数组,称为“projectNamesForCurrentDay”。
在我的 TableView
里面,我正在使用自定义 UITableViewCell
类叫 ThisWeekTableViewCell
它应该包含一个日期编号、日期名称,在其下方是一个项目符号列表,显示当天安排的所有项目:
我花了一周的大部分时间试图找出处理程序化、有条件地创建和在我的 Cell 中放置标签的最佳方法,但我仍然不确定我应该如何正确解决这个问题。显然,保存我的事件名称的数组可用于确定所需标签的数量以及每个标签的文本属性。但是标签应该在单元格内部还是在 ViewController 中创建和配置?如果是前者,我如何从我的单元类内部访问事件名称数组?
最佳答案
尝试这个 :
我试过一个例子。您可以根据您的要求进一步更改它。
View Controller :
class ViewController: UIViewController {
let dict1: [String:Any] = ["Date": "31", "Name": "Yesterday", "Meetings": ["Abc","Abc","Abc","Abc","Abc","Abc","Abc","Abc"]]
let dict2: [String:Any] = ["Date": "1", "Name": "Today", "Meetings": ["Abc","Abc","Abc","Abc","Abc"]]
let dict3: [String:Any] = ["Date": "2", "Name": "Tomorrow", "Meetings": ["Abc","Abc","Abc"]]
var arrayData:[[String: Any]] = []
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
arrayData = [dict1, dict2,dict3]
tableView.register(UINib(nibName: "CustomTableViewCell", bundle: nil), forCellReuseIdentifier: "cellReuse")
}
}
extension ViewController: UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return arrayData.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cellReuse", for: indexPath) as! CustomTableViewCell
cell.populate(data: arrayData[indexPath.row])
return cell
}
}
class CustomTableViewCell: UITableViewCell {
@IBOutlet weak var dateLabel: UILabel!
@IBOutlet weak var nameLabel: UILabel!
@IBOutlet weak var stackView: UIStackView!
func populate(data: [String: Any]) {
dateLabel.text = data["Date"] as? String
nameLabel.text = data["Name"] as? String
guard let meetingsArray = data["Meetings"] as? [String] else {
return
}
for views in stackView.arrangedSubviews {
views.removeFromSuperview()
}
for meeting in meetingsArray {
let label = createLabel(meeting: meeting)
stackView.addArrangedSubview(label)
}
}
func createLabel(meeting: String) -> UILabel {
let label = UILabel()
label.textColor = UIColor.black
label.numberOfLines = 0
label.text = meeting
return label
}
}
关于ios - 如何在 UITableViewCell 中创建未知数量的 UILabels?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59885048/
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Combination of List> 我有多个列表,可以是 2 个或 3 个,最多 10 个列表,有多个
我是一名优秀的程序员,十分优秀!