簡體   English   中英

Swift indexPathForSelectedRow從子視圖返回nil

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM