仅在屏幕的表格区域中显示的详细信息视图?
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
。所以,你的静态区域只是普通的UIView
s,但你的表格视图实际上是在UINavigationController
内,但看起来它是一个普通的表格 - 因为导航栏是隐藏的。
这意味着您会将“动态”内容推送到UINavigationController
,这将使屏幕的该部分具有动画效果,但屏幕的其余部分将保持静态。
【讨论】:
我认为 UINavigationController 必须填满整个屏幕 不,它没有。这是一种常见的、错误的误解。通常情况下,他们是 - 但他们不必是。以上是关于仅在屏幕的表格区域中显示的详细信息视图?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 UITextView 添加到 UITableView 详细信息
将数据从 Tableview 传递到 Tableview 详细信息