【问题标题】:The tap on the addChild viewController does not workaddChild viewController 上的点击不起作用
【发布时间】:2020-01-06 08:14:21
【问题描述】:

我正在制作一个抽屉式菜单。

tableView 位于DrawerMenuViewController 之上,即addChild 到ParentViewController。

当您打开抽屉并点击DrawerMenuViewController 上的tableView 单元格时,没有任何响应。

  • didSelectRowAt 未被调用。
  • delegate 已设置。
  • 我放了一个按钮而不是tableView,但我无法按下那个按钮(touchUpInside 中调用的方法没有被调用)

为什么我不能点击tableView Cell?

DrawerMenuViewController 就在ParentViewController 的左侧。 因为DrawerMenuViewController要按滑动从右边出来

- TabBarController
  - NavigationController
    - ParentViewController
      - DrawerMenuViewController
class ParentViewController: UIViewController {

    override func viewDidLoad() {   
        super.viewDidLoad()
        menuViewController = DrawerMenuViewController()
        menuViewController.view.frame = CGRect(
            x: view.frame.maxX,
            y: 0,
            width: view.bounds.width,
            height: UIScreen.main.bounds.height)
        view.addSubview(menuViewController.view)
        addChild(menuViewController)
        menuViewController.didMove(toParent: self)
    }
}

补充

DrawerMenuViewController 就在 ParentViewController 的左边。 因为 DrawerMenuViewController 要根据 swipe 从右边出来

【问题讨论】:

  • 将tabBarController?.view.addSubview(menuViewController.view) 更改为self.view.addSubview(menuViewController.view) ??
  • @Sh_Khan 感谢您的回答!抱歉,这是我的描述错误,view.addSubview(menuViewController.view) 是实际描述。即便如此,也没有点击响应
  • 你写道:x: view.frame.maxX -- 你看到你期望的菜单了吗?你在view debugger 看到了什么?
  • @Yonat 是的。我期待它。我添加了解释。请检查

标签: ios swift xcode uiviewcontroller uikit


【解决方案1】:
  1. 没有调用 didSelectRowAt 函数的一个原因是,即使您说您已设置委托人是谁,但 tableView 未正确设置。

只是为了确保您已将委托和数据源设置在正确的位置:

扩展 ParentViewController: UITableViewDelegate, UITableViewDataSource {

} 并在 ParentViewController 的 viewDidLoad() 中

tableView.delegate = self
tableView.dataSource = self

XCode 会询问您是否要插入所需的函数存根。

  1. 当你这样做时

    menuViewController.view.frame = CGRect( x: view.frame.maxX, y: 0, width: view.bounds.width, height: UIScreen.main.bounds.height)

由于 x 坐标,您的原点似乎超出范围

【讨论】:

  • 感谢您的回答。 tableView.delegate = self 和 tableView.dataSource = self 这两个对于 ParentViewController 是否正确,即使 MenuViewController 有它?我更新了问题。请检查
  • 应该在有tableView的viewcontroller文件中
猜你喜欢
  • 1970-01-01
  • 2019-04-19
  • 2017-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多