【发布时间】:2012-08-03 03:10:01
【问题描述】:
我目前正在开发一个 iOS 项目,但我对它很陌生。
我的问题描述: 我制作了自己的 TableView(包含 UITableView 的 UITableViewController 的派生)。不幸的是,从未调用过“didSelectRowAtIndexPath”方法。我仍然可以滚动 TableView - 我只是无法选择一行!
-
我的项目描述(-结构):
MyAppDelegate- 包含MyWindowMyWindow- 使用MyRootViewControllerMyRootViewController- 包含MyFirstViewControllerMyRootViewController- 包含MySecondViewControllerMyFirstViewController- 仅包含一个视图和一些按钮和标签作为起始视图。MyFirstViewController- 实现ViewMediatorMySecondViewController- 包含MyTableViewControllerMySecondViewController- 实现ViewMediatorViewMediator- 让视图在不知道彼此的情况下进行通信的协议MyTableViewController- 派生自UITableViewControllerMyTableViewController- 包含一个UITableView(在构造函数中生成)MyTableViewController- 覆盖cellForRowAtIndexPath(这有效,因此显示元素)MyTableViewController- 覆盖didSelectRowAtIndexPath(从不调用)MyTableViewController- 包含MyTableViewModelMyTableViewModel- 只是一个读取文件并将数据加载到TableView的类 -
我已经尝试过的:
- 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