在 Swift 中在 UITableViewController 的顶部添加一个 UIView

Nic*_*k89 4 uitableview uiview ios swift

我目前使用 UITableViewController (PFQueryTableViewController),我想在 TableView 的顶部显示一个 UIView。

理想情况下,我想在故事板中执行此操作,因此我可以轻松地向其中添加其他标签/按钮。但是,我似乎无法弄清楚如何或是否可以在故​​事板中做到这一点。那正确吗?

我已经以编程方式尝试过。我首先在顶部创建了变量:

var filterLabelView:UIView = UIView()

然后我在中添加了以下内容ViewDidLoad

filterLabelView.frame = CGRect(x: self.view.frame.width/2, y: self.view.frame.height/2, width: self.view.frame.width, height: 40)
filterLabelView.center = CGPointMake(self.view.frame.size.width  / 2, self.view.frame.size.height / 2)
filterLabelView.backgroundColor = UIColor.redColor()
self.view.addSubview(filterLabelView) // See below
Run Code Online (Sandbox Code Playgroud)

我也试过:

self.view.insertSubview(filterLabelView, aboveSubview: tableView)
Run Code Online (Sandbox Code Playgroud)

这会创建红色的 UIView,但它似乎嵌入到 tableview 中,因为当我上下滚动时,View 会随之移动。

我想创造什么

理想情况下,我希望视图位于屏幕底部,并且在用户滚动时移动。我希望它看起来如何的示例屏幕截图如下:

在此处输入图片说明

我已经读过最好的方法是使用一个 UIViewController 里面有一个 UITableView,但我宁愿不采用这种方法来查看我的应用程序已经构建了多少。

谁能帮我创建这个外观?提前致谢

Bas*_*Zen 5

您必须派生自UIViewController以获得完整的布局控制。

然后只需UITableView在 Storyboard 中添加一个实例。正常约束它,边缘齐平,顶部齐平,并具有customView.top= tableView.bottom。为您的控制器制作一个普通插座。

您只需要记住让您的自定义UIViewController采用通常的 dataSource 和委托协议,并将自己作为这些角色分配给UITableViewon 初始化的属性(通常是viewDidLoad())。

还有一个与在 on 时清除选定单元格相关的技巧viewDidAppear(),但 a 没有其他特别之处UITableViewController——它只是UIViewController具有内置tableView属性和自动分配的委托和非常不灵活的布局。

附录基于关于如何解决这个问题的评论:这有点像询问是否有任何方法可以让螺丝刀将钉子钉入木头。只需使用正确的工具。a 的顶级view属性UITableViewController是它UITableView本身。见下文,UITableViewController在布局调试模式下,没有别的东西,零代码。

这意味着整个视图树都嵌入在一个滚动实体中,因此所有子视图都将随之滚动。

在 Storyboard 中重新制作这个 VC 真的不应该是什么大不了的事。毕竟,您的渲染代码cellForRowAtIndexPath以及您的数据源和委托通常根本不会改变。

附录 2:

不熟悉 Parse,这可能是不可能的。(!!谢谢,Parse。)如果 Parse 没有为您提供PFQueryTableView可以自己嵌入的可分离对象,以下解决方法可能是可能的,但您需要了解 Objective-C 代码:

https://www.parse.com/questions/pfquery-tableview-for-uiviewcontroller

在此处输入图片说明