【发布时间】:2021-08-30 03:36:33
【问题描述】:
当单元格被点击到 detailTableView 时,我正在尝试从 tableView 传递数据。加载详细信息表视图时,我没有收到任何错误。 segue 正在执行,但是 tableView 保持空白。我的目标是将颜色添加到单元格中的 textLabel 中,并将 zord 添加到同一单元格中的 detailTextLabel 中。谁能告诉我我做错了什么
// My data
struct PowerRangerData {
let name: String
let rangerColor: String
let zord: String
}
// Intial vc
class DisplayVC: UIViewController {
@IBOutlet weak var table_View: UITableView!
var rangerArray = [
PowerRangerData(name: "Jason", rangerColor: "Gold ranger", zord: "Pyramidas Zord"),
PowerRangerData(name: "Tommy", rangerColor: "Green ranger", zord: "Dragon Zord"),
PowerRangerData(name: "Nick", rangerColor: "Red ranger", zord: "Phoenix Zord"),
PowerRangerData(name: "Kira", rangerColor: "Yellow ranger", zord: "Pteranodon Zord"),
PowerRangerData(name: "Jen", rangerColor: "Pink ranger", zord: "Time flyer 5"),
PowerRangerData(name: "Sky", rangerColor: "Blue ranger", zord: "Delta Runner 2")
]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
table_View.dataSource = self
table_View.delegate = self
}
}
extension DisplayVC: UITableViewDelegate {
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "detailSegue" {
if let index_path = self.table_View.indexPathForSelectedRow {
let detailVC = segue.destination as! DetailVC
detailVC.color = rangerArray[index_path.row].rangerColor
detailVC.zord = rangerArray[index_path.row].zord
}
}
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
table_View.deselectRow(at: indexPath, animated: true)
performSegue(withIdentifier: "detailSegue", sender: self)
}
}
extension DisplayVC: UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return rangerArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = table_View.dequeueReusableCell(withIdentifier: "cellId", for: indexPath)
cell.textLabel?.text = rangerArray[indexPath.row].name
return cell
}
}
// DetailVC
class DetailVC: UIViewController {
@IBOutlet weak var detailTableView: UITableView!
var color = ""
var zord = ""
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
detailTableView.delegate = self
detailTableView.dataSource = self
}
}
extension DetailVC: UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
detailTableView.deselectRow(at: indexPath, animated: true)
}
}
extension DetailVC: UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
let rangerData: [String] = [color, zord]
return rangerData.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = detailTableView.dequeueReusableCell(withIdentifier: "detailId", for: indexPath)
cell.textLabel?.text = color
cell.detailTextLabel?.text = zord
return cell
}
}
【问题讨论】:
标签: ios swift storyboard segue