Попробуйте это:
Я пробовал на примере. вы можете изменить его в соответствии с вашими требованиями.
Контроллер представления:
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
}
}
Пользовательская ячейка Xib:
![enter image description here](https://i.stack.imgur.com/cODWE.png)
Вывод в симуляторе:
![enter image description here](https://i.stack.imgur.com/lTuya.png)
Надеюсь, это поможет.