仅在屏幕的表格区域中显示的详细信息视图?

Posted

技术标签:

【中文标题】仅在屏幕的表格区域中显示的详细信息视图?【英文标题】:Detail view to show only in table area of screen? 【发布时间】:2011-08-13 15:33:31 【问题描述】:

我希望能够显示表格的详细视图,但不推送新屏幕,而只显示表格所在位置的详细视图。

如果可能的话,最好的设置方法是什么?

------------------------------------
|                                  |
|           nav bar or tool bar    |
------------------------------------
|                                  |
|        this area stays static    |
|                                  |
------------------------------------                ---------------------------------
|                                  |                |                               |
|                                  |                |                               |
|                                  |                |                               |
|           table…                 |                |  new uitableview pushed.      |
|                                  | cell clicked-> | only the table area changes   |
|                                  |                |                               |
|                                  |                |                               |
|                                  |                |                               |
------------------------------------                ---------------------------------
|      |      |      |      |      |
|      |      |      |      |      | < tab bar
|      |      |      |      |      |
------------------------------------

【问题讨论】:

我会建议你创建两个 tableView 一个在另一个之上并根据单元格选择显示/隐藏。 在这种情况下我将如何处理 tableview 代表? 创建一个委托和两个不同的 tableViewController 类,并添加与 tableViewController 相关的表视图并设置委托。 【参考方案1】:

如果您想要类似于推送 UIViewController 的效果,我想您可以将 tableview 动画化并同时将新视图动画化。我认为没有办法使用实际的 UINavigationController 机制来做到这一点,因为它用新的 viewcontroller 的视图替换了 UINavigationController 堆栈上的当前视图。

【讨论】:

【参考方案2】:

我建议两种方法:

    uitableView 插入UIView,这样您将始终引用一个包含合适视图的容器。此外,您只需要管理此表视图的子 subviews 的框架大小。在您的情况下,它将是第一个 uitableview,然后单击按钮可以使用 parent container 的引用添加下一个子视图。 或者,您可以有一个宏,它具有uitableview's frame 相对于父 UIView 的位置。在插入另一个子视图时,您可以设置框架,从而给人一种覆盖在基础uitableview 之上的印象。

【讨论】:

我个人更喜欢第一种方法,因为它消除了定位新子视图的麻烦,您只需将它们添加到位置 (0,0)。【参考方案3】:

只需在表格视图的顶部添加另一个视图并将其隐藏即可。设置内容并在需要时取消隐藏。

【讨论】:

【参考方案4】:

在我看来,解决此问题的最佳方法是使用不显示导航栏且不填满屏幕的UINavigationController。所以,你的静态区域只是普通的UIViews,但你的表格视图实际上是在UINavigationController 内,但看起来它是一个普通的表格 - 因为导航栏是隐藏的。

这意味着您会将“动态”内容推送到UINavigationController,这将使屏幕的该部分具有动画效果,但屏幕的其余部分将保持静态。

【讨论】:

我认为 UINavigationController 必须填满整个屏幕 不,它没有。这是一种常见的、错误的误解。通常情况下,他们是 - 但他们不必是。

以上是关于仅在屏幕的表格区域中显示的详细信息视图?的主要内容,如果未能解决你的问题,请参考以下文章

如何将集合视图单元格滚动到可见区域的中间

如何将 UITextView 添加到 UITableView 详细信息

将数据从 Tableview 传递到 Tableview 详细信息

仅在单元格中的特定 UIImage 上从 UITableView 推送详细信息视图?

过渡动画无法从回收视图到详细信息屏幕

didSelectRowAtIndexPath 中的详细信息项显示为 null