在表格视图控制器中添加容器视图时,如何将其移动到最底部? (迅速)

Posted

技术标签:

【中文标题】在表格视图控制器中添加容器视图时,如何将其移动到最底部? (迅速)【英文标题】:In a table view controller when adding a container view, how can I move it to the very bottom? (Swift) 【发布时间】:2021-01-25 17:33:40 【问题描述】:

我目前正在开发一个短信应用程序,为此我创建了一个表格视图控制器。我想在表格视图控制器的最底部添加一个文本字段。 Xcode 不允许我在控制器中添加文本字段,所以我添加了一个容器视图,我可以在其中放置一个文本字段。

我现在唯一遇到的问题是将容器视图放在用户能够输入文本的最底部(这在任何短信应用程序中都很常见)。

【问题讨论】:

一个更简单的解决方案可能是将其实现为UIVIewControllerf 并添加UITableViewUITextField 然后您将能够完全控制布局 您能在尝试之前添加一些代码吗? 【参考方案1】:

简短的回答是您不能向表格视图控制器添加任何内容。它是一个特殊用途的视图控制器,它管理一个表格视图控制器,没有别的。我一直觉得这有点傻,但这是真的。

你应该做的是从 UIViewController 的自定义子类开始作为你的父视图控制器。向其中添加一个容器视图,并将一个嵌入 segue 拖到一个表视图控制器中。您的视图控制器现在包含一个表格视图控制器。

现在将其他文本字段、按钮或其他视图组件添加到父视图控制器。

编辑

正如 SmartCat 在他们的回答中指出的那样,您还可以直接在视图控制器中管理表视图。没有什么说您必须使用UITableViewController

【讨论】:

谢谢!很惊讶你们回答得这么快。这是我在堆栈上发布的第一个问题。 正如@Smartcat 在他们的评论中指出的那样,您根本不必使用 UITableViewController。您还可以在常规视图控制器中管理表视图。如果你确实嵌入了一个表视图控制器,它会为你管理表视图,但这意味着你必须在表视图控制器和你的父视图控制器之间建立某种通信。【参考方案2】:

一个 UITableViewController 是非常有限的。你被一个完整的(viewController 视图)UITableView 卡住了。在行之外添加更多内容的最佳方法是在表格视图中插入自定义页眉或页脚。

虽然另一个答案建议将 UITableViewController 放入 UIViewController 的子类中的容器视图中,这会起作用,但它可能会导致您变得比需要的更复杂。这也肯定会限制您进一步自定义该容器视图以使其具有超出 UITableView 的内容的能力。

该策略可以让您使用您放入父 UIViewController 的任何其他内容围绕它进行自定义,但它仍然会迫使一个区域仅使用 UITableView,这可能会在您将来修改您的应用程序时打扰您,因为您将随着 UI 的发展,必须重新排列代码以移动到 UIViewController。

我从不在我的应用程序中使用 UITableViewController。它带来的东西很少,而且它确实添加了什么,你可以在你的 UIViewController 子类中轻松地复制到你自己的代码中——如果你甚至关心那些小事情的话。我只是将 UITableView 直接放入我的 UIViewController 的视图中,并通过实现这些协议让我的 UIViewController 也成为 UITableViewDelegate 和 UITableViewDataSource。

您可以查看SO answer 了解有关 UITableViewController 所添加的少量内容的详细信息。

【讨论】:

当然,使用 UITableViewControllers 完全是可选的。它为您管理表格视图的一些内务。它是否使您的任务看起来更简单或更复杂取决于您正在做的事情的细节和您的偏好。 (已投票)【参考方案3】:

没关系。而不是手动创建一个表视图控制器。允许更大的灵活性。

【讨论】:

这个答案是什么意思?

以上是关于在表格视图控制器中添加容器视图时,如何将其移动到最底部? (迅速)的主要内容,如果未能解决你的问题,请参考以下文章

故事板自动布局将视图放置在表格单元格中,并将尾随到超级视图约束固定到最左侧

如何从最新到最旧而不是从最旧到最新排序表格视图单元格

在自定义表格视图单元格问题中水平/垂直约束

如何将标签栏添加到表格视图而不是详细视图

如何在整个屏幕上滚动表格视图

将数据放入 UIView 容器的嵌入式表格视图中