[英]Swift indexPathForSelectedRow returns nil from subview
我有一個帶表的子視圖,並且可以很好地填充數據。 我從超級視圖中獲得了“ prepare(for segue:”),可以很好地識別出單元格的選擇。但是,從超級列表中的prepare函數中,indexPathForSelectedRow返回nil。
self.crossRefTVC.tableView.indexPathForSelectedRow //returns nil
其他一切工作正常,包括從主超級視圖填充crossRefTVC.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.
}
就像我說的那樣,准備代碼可以正確執行,並且可以訪問crossRefTVC中的變量,但是由於某種原因它看不到所選單元格。
您可以在此處查看此子視圖的情節提要:
我刪除了crossRefTVC並將UITableViewDataSource和UITableViewDelegate添加到MyText類,並將其用於所有與表相關的代碼。 這解決了問題。 盡管我並不是很想在這個主類中擁有所有代碼,但至少現在可以了。 謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.