Swift indexPathForSelectedRow从子视图

时间:2018-03-25 23:27:28

标签: ios swift uitableview tableview swift4

我有一个带有表的子视图,我正在填充数据。我有“准备(对于segue:”从superview中识别单元格的选择就好了。但是,从super的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中的变量,但由于某种原因它无法看到所选的单元格。

您可以在此处查看此子视图的故事板:

enter image description here

1 个答案:

答案 0 :(得分:0)

我删除了crossRefTVC并将UITableViewDataSource,UITableViewDelegate添加到MyText类,并将其用于所有与表相关的代码。这解决了这个问题。虽然我并不想在这个主要类中拥有所有代码,但至少它现在可以工作了。感谢