将 UIToolbar 锁定到 UITableViewController 的顶部

Lock UIToolbar to Top of UITableViewController

在 Objective-c 和 Swift 中有很多像我这样的问题,询问如何将 UIToolbar 锁定到 UITableViewController 的顶部,我将添加到该列表中。 但是,其他人没有回答我的问题。我需要将它锁定到视图控制器的顶部,这样它就不会被程序视为一个单元格,因此它不会向下移动,而是锁定在顶部。

我找到的所有其他答案都希望我

(a) Embed the UITableViewController in a UINavigationViewController

(b) To use a UIViewController with a UITableView inside it


我不想做其中任何一个。
我想保留一个 UITableViewController——而不是用 UIViewController 和 UITableView 替换它——我不想使用 UINavigationViewController——我尽量不这样做,因为它会在应用程序的其余部分引起过多的问题(可以修复,但我不想那样做)。

您所要求的是不可能的。 UITableViewController 的根视图是一个 UIScrollView。您在 UITavleViewController 中作为子视图添加的每个视图都必须是该滚动视图的一部分,因此将与其一起滚动。

要使其正常工作,您必须采用您提到的选项之一(移动到带有 table 视图的 UIViewController 作为子视图可​​能对您的应用程序造成的干扰最少)。

我能想到几个不合理的解决方案: - 在你的 UITableViewController 中实现 scrollviewDidScroll 委托方法,并不断地在滚动视图中重新定位游览工具栏,使其看起来总是在顶部(工具栏可能会抖动并且看起来很糟糕) - 在包含工具栏的整个应用程序之上创建一个新的 UIWindow(不要这样做,这是一个糟糕的主意)。