我正在为高中生制作一个修订版应用程序。在此视图中,用户应该能够选择他们要针对某个主题学习的单元,并且所选单元的索引路径将存储在一个int数组中,并传递到下一个用于显示图像的视图。不幸的是,didSelectRowAt
方法由于某种原因没有响应。
正确设置了委托和数据源,我知道在我在函数中编写打印语句时未调用它,并且在单击任何一个表格单元格时控制台中均未打印任何内容。
var units = [String]()
var selectedRows = [Int]()
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return units.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "unitCell", for: indexPath) as! UnitCell
cell.textLabel?.text = units[indexPath.row]
return cell
}
func tableView(tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
selectedRows.append(indexPath.row)
print(selectedRows)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let destination = segue.destination as! ImageView
destination.folderNames = selectedRows
}
我期望所选单元格的行索引为int数组。但是现在它只是空的。
答案 0 :(得分:1)
如果您在问题中显示的代码正确,则didSelectRowAt
方法的签名不正确。应该是:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
请注意第一个参数的前导“ _”。如果您的类是UITableViewController,则还需要添加一个override
关键字。
如果您的代码已在使用此签名,请更新您的问题以反映这一点。
此外,此前置代码也不正确。请将其更新为您实际使用的
var units = String var selectedRows = Int
答案 1 :(得分:0)
您应该使用delegate method
optional func tableView(_ tableView: UITableView,
didSelectRowAt indexPath: IndexPath)
代替您现有的
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: IndexPath)
尝试并分享您的结果。
答案 2 :(得分:0)
第一件事是您的 didSectRow 被描述,因此请使用 低于一个
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
其次,您必须像下面一样将TableView委托设置为Self
tableView.delegate = self