在 UITableViewController 中将 UIView 放在 UITableView 前面
Posted
技术标签:
【中文标题】在 UITableViewController 中将 UIView 放在 UITableView 前面【英文标题】:Putting a UIView in front of UITableView in a UITableViewController 【发布时间】:2014-11-08 16:55:53 【问题描述】:我试图在我的 UITableViewController 中的 UITableView 前面放置一个 UIView。 UIView 最初设置为隐藏。我这样做是为了如果数据源中没有项目......然后显示 UIView 并说“抱歉没有项目”......当没有项目时这有效。但是,UITableViewController 一次显示 6 个项目,每当少于 6 个项目(但多于 0)时,它会让用户向下滚动,如果向下滚动足够多,就会显示我的 UIView。我怎样才能防止这种情况发生?我认为我的代码仅适用于每个页面,而不适用于整个视图控制器,但不确定如何修复它。奇怪的是没有启用分页。
【问题讨论】:
您需要发布您的代码。您如何将UIView
添加到视图层次结构中?它如何确定它的布局?你如何显示/隐藏它?如果它是 UIScrollView
的孩子,它会滚动。
【参考方案1】:
每当我需要做这样的事情时,我都会选择 2 个选项之一:
-
使用添加了
UITableView
的常规UIViewController
。这样,您可以将UIView
(或者可能是UILabel
)添加到UIViewController
的view
。然后,当您没有要显示的项目时,您可以将UITableView
的alpha
设置为零,并且可以看到标签。
创建一个原型UITableViewCell
,显示您希望用户看到的“No Items”消息。
【讨论】:
【参考方案2】:我的一个应用程序正是成功地做到了这一点。 UIView 需要是 UITableView 的对等点(即在同一个父视图中)并且在它的前面(在父视图列表中它之后)。
您的故事板应如下所示:
Scene
ViewController
Top Layout Guide
Bottom Layout Guide
View
Table View
View // the view which covers the table view.
使用约束使表格相对于其父视图具有固定大小,并使封面视图与表格大小相同并与之对齐,因此它始终在可见时覆盖它。
听起来您不小心将封面视图放在桌子内或桌子后面或其他什么地方。
【讨论】:
太棒了。我的工作印象是列表中的第一个视图在前面。情况恰恰相反。谢谢!【参考方案3】:如果您使用的是 UITableView 控制器,则专门找到了一个解决方案。如果您的数据集为空,请使用此代码:[self.tableView setSeparatorInset:UIEdgeInsetsZero];
。这消除了空行的外观并使您的 UITableView 看起来像一个空的 UIView。然后,只需自定义您的视图以使其成为您想要的样子。对于我的应用,我向 UITableView(如果数据集为空)添加了一个标签作为子视图,给出了“无项目”消息。
【讨论】:
以上是关于在 UITableViewController 中将 UIView 放在 UITableView 前面的主要内容,如果未能解决你的问题,请参考以下文章
在 UINavigationController 中显示 UITableViewController
在 UIPopoverController 中显示 UItableViewController
在 UITableViewController 中没有调用 viewWillAppear?