Ios 在不同控制器中处理UITableViewDelegate事件

Ios 在不同控制器中处理UITableViewDelegate事件,ios,Ios,我正在iOS中使用UIViewControllerContaining功能。我的容器控制器称为mainViewController。它由menuViewController和contentViewController组成。menuViewController是一个UITableViewController 现在,我想在menuViewController中选择一行时,处理mainViewController中的事件。我必须在不更改menuViewController代码的情况下完成所有这些操作

我正在iOS中使用UIViewControllerContaining功能。我的容器控制器称为mainViewController。它由menuViewController和contentViewController组成。menuViewController是一个UITableViewController

现在,我想在menuViewController中选择一行时,处理mainViewController中的事件。我必须在不更改menuViewController代码的情况下完成所有这些操作


**我知道我可以使用委托调用mainViewController,但使用委托将改变**menuViewController代码,我不想这样做

假设menuViewController没有设计某种委托或回调块(或者你不会问这个问题),那么你的选项真的非常有限,没有好的选项,因为任何选项都会违反你试图利用的包容概念

在我看来,你的选择是:

  • 修改MenuViewController以在项目选择时添加委托或块回调。这是最好的方法,因为它可以很好地控制和隔离menuViewController

  • 为menuViewController创建子类,覆盖
    didSelectCell…
    并执行数字1。可能还需要确保你也能打电话给super。这是不好的,因为您正在对menuViewController的内部结构进行假设,并违反了安全壳

  • 窃取tableView代理并自行处理。这就对menuViewController的内部进行了更多的假设


  • 总之,我真的建议您重新考虑不更改menuViewController的决定。

    那么,当您说不想更改menuViewController中的任何代码时,是否包括
    didselectRowatinedexpath
    ?因为我只知道
    didselectrowatinexpath
    用于检测用户何时选择了行。谢谢David!我使用了数字1,将menuViewController中的一个委托添加回mainViewController。我限制自己的原因是我试图把它变成一个控件,而不必依赖于menuViewController。