我目前正在开发一个iOS项目,我对它很陌生。
我的问题描述: 我编写了自己的TableView(包含UITableView的UITableViewController的派生)。不幸的是,从未调用过“didSelectRowAtIndexPath”方法。我仍然可以滚动TableView - 我只是不能选择一行!
我的项目描述(-structure):
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
我已经尝试过:
有趣的事实:它之前有效,我只是对ViewControllers的通信添加了一些小改动。在他们直接沟通(单向)之前,现在他们通过调解员(双向)进行交流 - 众所周知的调解员模式。这不应该影响视图及其控制器,对吗?
答案 0 :(得分:0)
除了将表视图控制器指定为表视图的委托之外,还需要视图控制器的view
属性完全是您的tableView。
如果您想要一个单独的视图和一个表视图作为其子视图(允许其他子视图),您将必须子类UIViewController
而不是UITableViewController
。