У меня интересный вопрос. У меня есть два вида таблицы, один внутри другого. У меня есть структура, которую я хочу использовать для добавления данных в мои представления таблицы. Структура имеет 2 строковых элемента и массив другой структуры, которая имеет 3 строковых элемента. Простые вещи.
Первая структура имеет имя группы, ее местоположение и массив ее членов.
вторая структура имела имя, фамилию и роль члена.
В первом табличном представлении я хочу передать название группы в метке.
Во втором табличном представлении я хочу передать все элементы в каждой строке.
У меня нет проблем с первым представлением таблицы, но я полностью теряюсь, когда дело касается второго.
Я приветствую любую помощь. Приветствия.
Jonas
Я добавлю код ниже.
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
var band = [Band]()
var members = [Member]()
@IBOutlet weak var firstTableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
firstTableView.delegate = self
firstTableView.dataSource = self
addBandsAndMembers()
}
func addBandsAndMembers() {
members.append(Member(firstName: "Eddie", lastName: "Vedder", role: "Singer"))
members.append(Member(firstName: "Stone", lastName: "Gossard", role: "Guitar"))
members.append(Member(firstName: "Mike", lastName: "McCready", role: "Guitar"))
members.append(Member(firstName: "Jeff", lastName: "Ament", role: "Bass"))
members.append(Member(firstName: "Matt", lastName: "Cameron", role: "Drums"))
band.append(Band(name: "Pearl Jam", place: "Seattle", members: members))
members.removeAll()
members.append(Member(firstName: "Andy", lastName: "Wood", role: "Singer"))
members.append(Member(firstName: "Stone", lastName: "Gossard", role: "Guitar"))
members.append(Member(firstName: "Bruce", lastName: "Fairweather", role: "Guitar"))
members.append(Member(firstName: "Jeff", lastName: "Ament", role: "Bass"))
members.append(Member(firstName: "Greg", lastName: "Gilmore", role: "Drums"))
band.append(Band(name: "Mother Love Bone", place: "Seattle", members: members))
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if tableView.tag == 100 {
return band.count
}else {
return band.count // This is puzzeling me
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if tableView.tag == 100 {
let cell = tableView.dequeueReusableCell(withIdentifier: "firstTableViewCell", for: indexPath) as! firstTableViewCell
cell.label.text = band[indexPath.row].name
return cell
}else {
let cell = tableView.dequeueReusableCell(withIdentifier: "secondTableViewCell", for: indexPath) as! secondTableViewCell
cell.firstName.text = band[indexPath.row].members[indexPath.row].firstName
print(band[indexPath.row].members[indexPath.row].firstName)
return cell
}
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if tableView.tag == 100 {
return 190
}else {
return 35
}
}
}
class firstTableViewCell: UITableViewCell {
@IBOutlet weak var secondTableView: UITableView!
@IBOutlet weak var label: UILabel!
func setTableViewDataSourceDelegate <D: UITableViewDelegate & UITableViewDataSource> (_ dataSourceDelegate: D, forRow rom: Int){
secondTableView.delegate = dataSourceDelegate
secondTableView.dataSource = dataSourceDelegate
secondTableView.reloadData()
}
}
class secondTableViewCell: UITableViewCell {
@IBOutlet weak var firstName: UILabel!
@IBOutlet weak var lastName: UILabel!
@IBOutlet weak var role: UILabel!
}
struct Band {
var name: String
var place: String
var members: [Member]
}
struct Member {
var firstName: String
var lastName: String
var role: String
}
Что я пытаюсь сделать, так это иметь список групп. Каждая строка в табличном представлении будет одной полосой. Затем в этой строке находится другое табличное представление, в котором каждый член группы может быть выбран из этой таблицы.
Изображение прилагается.
First Tableview имеет список групп. Во втором табличном представлении есть список участников этой группы