我有一个带有以下代码的基本视图控制器:

class List2ViewController: UIViewController {

    @IBOutlet weak var segmentedControl: UISegmentedControl!
    @IBOutlet weak var mapView: MKMapView!

    override func viewDidLoad() {
        super.viewDidLoad()

        segmentedControl.addTarget(self, action: #selector(showDummyViewController), for: UIControlEvents.valueChanged)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    func showDummyViewController(){

        let controller = storyboard?.instantiateViewController(withIdentifier: "tableController")
          if let controller = controller {
             controller.view.frame = view.bounds
             view.addSubview(controller.view)
             addChildViewController(controller)
             controller.didMove(toParentViewController: self)
        }
    }
}


如您所见,我正在添加一个恰好是表视图控制器的子视图控制器。此表视图控制器的代码如下:

class MyTableViewController: UITableViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        let nib = UINib(nibName: CustomCellTypeIdentifiers.NoResultCell, bundle: nil)
        tableView.register(nib, forCellReuseIdentifier: CustomCellTypeIdentifiers.NoResultCell)

    }

    override func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 100
    }


    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: CustomCellTypeIdentifiers.NoResultCell, for: indexPath) as! CellType
        return cell
    }

}


我的问题是,当我将表视图添加为子控制器时,它不响应任何触摸输入。表格视图显示出来,但是它不会滚动或选择任何行。此外,我的单元格不显示在行中。您能否解释一下该实现中缺少的内容?先感谢您。

以下是结果的图片:ios - 为什么子表 View  Controller 对触摸和滚动不响应?-LMLPHP

最佳答案

我在这里看到的一个问题:

let cell = tableView.dequeueReusableCell(withIdentifier: CustomCellTypeIdentifiers.NoResultCell, for: indexPath)


应该是这样的:

let cell = tableView.dequeueReusableCell(withIdentifier: CustomCellTypeIdentifiers.NoResultCell, for: indexPath) as? CustomTableViewCellName


其中CustomTableViewCellName应替换为CustomCellTypeIdentifiers.NoResultCell的值,即您的自定义单元名称,即您的nibName也:

let nib = UINib(nibName: CustomCellTypeIdentifiers.NoResultCell, bundle: nil)

关于ios - 为什么子表 View Controller 对触摸和滚动不响应?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40067896/

10-11 04:28