我有一个有趣的问题。我有两个表视图,一个在另一个内。我有一个要用于向表视图添加数据的结构。该结构具有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
}
我要完成的工作是列出乐队列表。表格视图中的每一行都是一个带。然后在该行的另一个表格视图中,可以从该表格中选择每个乐队成员。
附有图片。
第一个Tableview具有乐队列表。第二张表格视图包含该乐队的乐队成员列表
答案 0 :(得分:0)
好的,我在这里要做的是使用部分。每个乐队都有自己的表视图部分,该部分中的每一行都是乐队成员。小节标题可以包含乐队名称的标签,并且每一行可以包含成员的标签。
func numberOfSections(in tableView: UITableView) -> Int {
return bands.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return bands[section].members.count
}
func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return bands[section].name
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "secondTableViewCell", for: indexPath) as! secondTableViewCell
// Configure the cell here...
return cell
}
此外,我将secondTableViewCell
重命名为BandMemberCell
以便清楚地表示其含义。