【问题标题】:didSelectRowAtIndexPath of custom UITableViewController never gets called自定义 UITableViewController 的 didSelectRowAtIndexPath 永远不会被调用
【发布时间】:2012-08-03 03:10:01
【问题描述】:

我目前正在开发一个 iOS 项目,但我对它很陌生。

  1. 我的问题描述: 我制作了自己的 TableView(包含 UITableView 的 UITableViewController 的派生)。不幸的是,从未调用过“didSelectRowAtIndexPath”方法。我仍然可以滚动 TableView - 我只是无法选择一行!

  2. 我的项目描述(-结构):

    MyAppDelegate - 包含MyWindow

    MyWindow - 使用MyRootViewController

    MyRootViewController - 包含MyFirstViewController

    MyRootViewController - 包含MySecondViewController

    MyFirstViewController - 仅包含一个视图和一些按钮和标签作为起始视图。

    MyFirstViewController - 实现ViewMediator

    MySecondViewController - 包含MyTableViewController

    MySecondViewController - 实现ViewMediator

    ViewMediator - 让视图在不知道彼此的情况下进行通信的协议

    MyTableViewController - 派生自 UITableViewController

    MyTableViewController - 包含一个UITableView(在构造函数中生成)

    MyTableViewController - 覆盖cellForRowAtIndexPath(这有效,因此显示元素)

    MyTableViewController - 覆盖didSelectRowAtIndexPath(从不调用)

    MyTableViewController - 包含MyTableViewModel

    MyTableViewModel - 只是一个读取文件并将数据加载到TableView的类

  3. 我已经尝试过的:

    • 3.1 手动将“MyTableViewController”设置为包含 UITableView 的委托 - 即使这应该自动完成。
    • 3.2 将 UITableView 置于“MyTableViewController”之外,然后将其设置为“MyTableViewController.view”和/或“MyTableViewController.tableView”。
    • 3.3 我在 UITableView 中手动启用了 UserInteraction。认为这不是问题,因为滚动效果很好。

有趣的事实:它之前有效,我只是对 ViewControllers 的通信进行了微小的更改。之前它们是直接通信(单向),现在它们通过中介(双向)进行通信——众所周知的中介模式。这应该不会影响视图及其控制器,对吧?

【问题讨论】:

  • 欢迎来到stackoverflow。编辑您的问题以包含您的 tableView:didSelectorRowAtIndexPath: 方法。
  • "MyTableViewController - 派生自 TableViewController" - 但TableViewController 是从哪里派生的?你的意思是UITableViewController? - 如果是这样,只需编辑您的问题。
  • 谢谢。是的,我的意思是UITableViewController

标签: objective-c ios uitableview


【解决方案1】:

除了将表格视图控制器指定为您的表格视图的委托之外,还需要您的视图控制器的view 属性与您的表格视图完全相同。

如果你想拥有一个单独的视图和一个表格视图作为它的子视图(允许其他子视图),你将不得不继承 UIViewController 而不是 UITableViewController

【讨论】:

  • 好的,我做到了:MyTableViewController.view = myTableView MyTableViewController.tableView = myTableView 没什么区别,但是谢谢。
  • 确保委托和数据源设置正确。如果是 UITableViewController,则不需要设置视图。
猜你喜欢
  • 1970-01-01
  • 2012-04-18
  • 1970-01-01
  • 2012-10-14
  • 1970-01-01
  • 2014-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多