【问题标题】:UITableViewController as ChildViewController not calling delegate methodsUITableViewController 作为 ChildViewController 不调用委托方法
【发布时间】:2014-11-29 15:56:23
【问题描述】:

我有一个 UITableViewController ,当我将它用作“初始视图控制器”时,它可以完美运行。 现在,我将它用作另一个视图控制器的“子视图控制器”,但是现在当我尝试选择一行时,不会调用“didSelectRow”方法,而当我长按同一行时,“didSelectRow”方法被调用。 我已经在 SO 上解决了几乎所有关于 UITableviewController 的问题,但直到现在我还没有找到任何解决这个问题的方法。

我正在使用 XCode 6,以下代码用于将其添加为子视图控制器

[self addChildViewController:vc];
[self.ringtoneView addSubview:vc.view];
[vc didMoveToParentViewController:self];

任何帮助将不胜感激。

【问题讨论】:

    标签: ios uitableview xcode6 didselectrowatindexpath childviewcontroller


    【解决方案1】:

    终于我设法解决了这个问题,感谢这个答案 https://stackoverflow.com/a/18159463/3632958

    我在父视图控制器中错误地添加了一个点击手势识别器,这阻止了表格视图上的正常选择。

    【讨论】:

      【解决方案2】:

      当你调用方法时

      [self addChildViewController:vc];
      

      您只需告诉父母视图控制器转发外观和方向方法,例如

      • viewWillAppear:
      • viewDidAppear:
      • viewWillDisappear:
      • viewDidDisappear:
      • willRotateToInterfaceOrientation:duration:
      • willAnimateRotationToInterfaceOrientation:duration:
      • didRotateFromInterfaceOrientation:

      所以我认为最好创建一个 UITableView 并将您的父母视图控制器分配为 tableview 的委托和数据源。所以你的视图控制器需要采用 UITableViewDelegate 协议和 UITableViewDataSource。

      【讨论】:

      • 这可行,但我不想这样,问题是为什么 UITableViewController 在添加为 childViewController 时无法按预期工作。
      • 好的,那我想你需要把 [self addChildViewController:vc];和 [self.ringtoneView addSubview:vc.view];在您的父母视图控制器的 viewdidAppear 方法中。 [vc didMoveToParentViewController:self];没用。
      • 我不是在 viewDidLoad 上添加 childViewController,而是在满足某些条件时在运行时动态添加
      猜你喜欢
      • 1970-01-01
      • 2016-05-01
      • 2016-03-03
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 2012-09-22
      • 2014-11-21
      • 2017-02-14
      相关资源
      最近更新 更多