我有一个子视图和一个表,我正在填充数据。我在superview中有“prepare(for segue)”,可以很好地识别单元格的选择。然而,在super中的prepare函数中,indexPathForSelectedRow返回零。即使我选择了单元格。
self.crossRefTVC.tableView.indexPathForSelectedRow //returns nil
其他一切都很好,包括填充crossRefTVC。主superview中的tableview数据。
添加此详细信息:
class MyText: UIViewController, UIGestureRecognizerDelegate, UIPickerViewDelegate, UIPickerViewDataSource {
@IBOutlet var crossRefTable: UITableView!
var crossRefTVC = CrossRefTVC()
override func viewDidLoad() {
super.viewDidLoad()
crossRefTable.delegate = crossRefTVC
crossRefTable.dataSource = crossRefTVC
}
@objc func myMethodToHandleTap(_ sender: UITapGestureRecognizer) {
crossRefTVC.results.append(data)
crossRefView.center = view.center
view.addSubview(crossRefView)
}
...
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "CRShowDetail" {
print(self.crossRefTVC.tableView)
print(self.crossRefTVC.tableView.indexPathForSelectedRow as Any)
}
}
class CrossRefTVC : UITableViewController {
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
//other table overrided funcs here, all work.
}
正如我所说,prepare代码执行正确,它可以访问crossRefTVC中的变量,但由于某种原因,它看不到所选的单元格。
您可以在此处看到此子视图的情节提要: