从不同的控制器重用tableview:如何拆分didSelectRowAtIndexPath行为?

时间:2011-03-28 15:12:52

标签: objective-c

我正在处理我的收藏夹实施。最后,它应该与iPhone上的电话簿中的收藏夹功能相同。

我有以下设置(除了其他控制器和类):

  • TabBarController(名为mainTabBarController)
  • 带有Tableview的NavigationController(让我们称之为listNavController)
  • ViewController包含一些用于显示行详细信息的组件(名为detailViewController)
  • 带有TableView的NavigationController,用于收藏记录(名为favoritesNavController)

favoritesNavController ,我想选择一行(来自 listNavController ),这样我就可以在我的收藏夹表视图中添加一个新条目。

所以,我决定重新使用我的 listNavController ,因为它具有我需要的所有功能。像搜索,索引等

我设法从 mainTabBarController 中显示 listNavController 。所以这里没问题。当我从 listNavController 中选择一行时,它会显示该行的 detailViewController 。当然,这是预期的,因为它位于 listNavController 中的 didSelectRowAtIndexPath

但是,当我在 favoritesModelViewController 的帮助下从我的 favoritesNavController 启动 listNavController 时,它仍会显示 detailViewController 选择一行时。

在这种情况下,我想将所选行返回到 favoritesNavController 。然后我可以将它添加到我最喜欢的列表中。

那么,我如何在代码中区分这种行为?我应该使用协议,授权等吗?

任何提示?

关于,

拉​​特格

1 个答案:

答案 0 :(得分:0)

事实证明我的方向是错误的。

已发布问题的解决方案如下:

我创建了listNavController的子类,并重写了didSelectRowAtIndexPath方法。接下来,我将这个新的视图控制器与导航控制器一起呈现为模态视图(presentModalViewController)。

最后,我将子代视图控制器的委托和协议设置为启动类。这样我就可以从同一个控制器中呈现和关闭子类视图控制器。一个更干净和MVC的方式!