在 UiTableView 之上创建一个按钮

Posted

技术标签:

【中文标题】在 UiTableView 之上创建一个按钮【英文标题】:Create a button on top of UiTableView 【发布时间】:2013-04-17 00:44:40 【问题描述】:

我试图了解 Facebook Messenger 如何在屏幕按钮上创建一个按钮,该按钮位于 UITableView 顶部并跟随滚动?

我想实现右下角的蓝色按钮。我应该采取什么方法来实现这样的目标?

任何朝着正确方向的推动都将受到高度赞赏。

【问题讨论】:

【参考方案1】:

添加叠加视图时有几种途径:

作为包装UINavigationController的子视图,这意味着它不会随着表格的内容滚动

作为只有 1 个部分的普通样式 UITableView 的部分页脚

作为UITableView 的子视图并使用UIScrollViewDelegatescrollViewDidScroll: 在用户滚动表格时不断更新视图的框架(使其看起来保持不动)

【讨论】:

jszumski 我不能确定使用第二个选项,因为我有多个部分。而且由于我绝对希望按钮滚动,所以我不能使用第一个选项,你不觉得第三个似乎有点过分吗? 如果内容滚动,您确实希望按钮滚动到视图之外?数字 3 并不过分,我已经在一些应用程序中使用过它,它是操作系统实现普通样式节标题的基础。 作为评论 - 如果你要附加一个 segue 到它 - 然后确保你记住当 segue 被触发时 - 它仍然会引用以前的视图控制器位置,所以你需要更新如果您不希望导航出现异常,则带有新选择器的按钮可以指向新的视图控制器。【参考方案2】:

在你的 UIViewController 子类中这样做:

[self.view insertSubview:myButton aboveSubview:self.tableView];

注意:如果你的 UIViewController 是 UITableViewController,这段代码可能不起作用,因为 UITableViewController 将它的表视图作为它的根视图,这使得很多程序员远离它,因为这意味着限制。

【讨论】:

VinceBurn 但这不会向下滚动,对吗? @Jonathan 这不会滚动。从您的屏幕截图来看,您似乎不想滚动。如果你想滚动你需要在 ScrollView 里面(记住 TableView 继承自 ScrollView )或者需要在 scrollViewDidScroll 的帮助下移动。【参考方案3】:

您可以在 UITableViewController 中轻松完成此操作

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate.window addSubView:myButton];

我试过这个,它对我有用。祝你好运! :)

【讨论】:

以上是关于在 UiTableView 之上创建一个按钮的主要内容,如果未能解决你的问题,请参考以下文章

将 UIButton 放入 UITableView

swift - 为重复数据和无数据创建页面

将 UITableView 单元堆叠在彼此之上

UIScrollview有一个大视图,还是带有多个视图的UITableview?

为啥我的 UITableView 单元格上的这个按钮会重新绘制自己?

从 XIB 加载的 UITableView Sectionheader 有时显示不正确