Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何添加浮动在UITableView上的按钮_Swift_Uitableview - Fatal编程技术网

Swift 如何添加浮动在UITableView上的按钮

Swift 如何添加浮动在UITableView上的按钮,swift,uitableview,Swift,Uitableview,我有一个显示帖子列表的TableView。我想添加一个浮动在TableView上的按钮,当用户滚动帖子时,该按钮不会移动。该按钮将允许用户发布。我如何实现这一点?我似乎无法将superview添加到我的tableview中 Google Plus应用程序也有类似的功能,但如果你没有该应用程序,它也会出现这种行为。按钮位于左下角 谢谢 更好的方法是创建UIViewController(而不是UITableViewController)并将其添加到UITableView和UIButton。在这种情况

我有一个显示帖子列表的TableView。我想添加一个浮动在TableView上的按钮,当用户滚动帖子时,该按钮不会移动。该按钮将允许用户发布。我如何实现这一点?我似乎无法将superview添加到我的tableview中

Google Plus应用程序也有类似的功能,但如果你没有该应用程序,它也会出现这种行为。按钮位于左下角


谢谢

更好的方法是创建
UIViewController
(而不是
UITableViewController
)并将其添加到
UITableView
UIButton
。在这种情况下,可以调整情节提要中的所有视图并设置适当的约束

当我们使用
UIViewController
并添加tableView和按钮时,我们可以在InterfaceBuilder中进行大多数界面设置


当然,您可以将按钮添加到
UINavigationController
视图,如果
UITableViewController
嵌入,或者添加到
keyWindow
,但这是一种更糟糕的方法。

有几种方法可以在不丢失表视图控制器的情况下处理此问题

为表视图控制器使用容器视图 如果您使用的是故事板,请使用按钮和容器视图设置视图控制器。在该容器视图中,具有表视图控制器。您可以使用委派、通知或键值观察来保持两个视图控制器同步

将按钮添加到窗口而不是表视图控制器
如果您只想让按钮在表视图上浮动,那么可以将按钮添加到窗口而不是视图中。这必须在运行时完成。

我建议使用按钮创建一个自定义标题视图,并将该视图用于表的
视图ForHeaderInSection
。这样,您可以将控制器保持为
UITableViewController
而不是
UIViewController
,并且在用户滚动时它将保持在顶部


请注意,如果表有多个部分,则需要调整数据源/委托逻辑,因为每个部分都有一个死区。

我找到了答案。显然,Interface Builder中存在一个不允许在UITableView上放置UIButton或UIView的错误。解决方法是将按钮或视图拖动到文档大纲中,并将其放置在场景的最底部。完成此操作后,可以将该按钮放在UITableView的前面

最后,在添加自动布局约束之前,按钮或图像不会出现。执行此操作后,按钮或图像将浮在桌子上,并在用户滚动时保持固定


谢谢

另一个选项是将按钮作为子视图添加到表视图中,并在
scrollViewDidScroll:
上更新其转换。这种方式不好,因为在这种情况下,按钮将“跳舞”,而表视图将scrolling@Igor每当内容偏移量更改时,在呈现之前调用scrollViewDidScroll。如果你的数学是正确的,你将永远不会看到视图“跳舞”,如果你这样做了,你就做错了。如果是这种情况,可以将按钮添加到第一个(或多个,如果需要)节标题中。例如,使用TableViewController比使用tableView的ViewController有一些优势,没有TableViewController,就不能有静态表。使用容器来包含TableViewController是一个更好的主意。将其添加到导航控制器或窗口是坏主意。@EmilioPelaez,我不同意你的看法。当我们使用
UIViewController
并添加tableView和按钮时,我们可以在
InterfaceBuilder
中进行大多数界面设置。可根据不同的屏幕尺寸进行直观方便的调整。如果需要带有静态单元格的tableView,可以添加容器视图并嵌入其中
UITableViewConrtoller
。同样,大部分设置将在
InterfaceBuilder
中完成。您建议的方式不好(scrollViewDidScroll:中的调整按钮),因为在这种情况下,按钮将“跳舞”,而tableView将滚动。
UITableViewController
在一种情况下具有优势-如果您只使用
UITableView
,而不向其添加其他子视图。添加子视图会带来不便和错误,因为
UITableViewController
不适用于此(想想,为什么不能在IB中将子视图添加到UITableView?)。浮动操作按钮不是Apple UI模式。。。只是说