Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.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
Ios 在Swift中的UITableViewController顶部添加UIView_Ios_Swift_Uitableview_Uiview - Fatal编程技术网

Ios 在Swift中的UITableViewController顶部添加UIView

Ios 在Swift中的UITableViewController顶部添加UIView,ios,swift,uitableview,uiview,Ios,Swift,Uitableview,Uiview,我目前使用UITableViewController(PFQueryTableViewController),我希望在TableView顶部显示UIView 理想情况下,我希望在情节提要中这样做,这样我就可以轻松地向其中添加其他标签/按钮。然而,我似乎不知道如何或者是否可以在故事板中做到这一点。是这样吗 我已经用编程的方式尝试过了。我首先在顶部创建了变量: var filterLabelView:UIView=UIView() 然后我在ViewDidLoad中添加了以下内容: filterLab

我目前使用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
我还尝试:

self.view.insertSubview(filterLabelView, aboveSubview: tableView)
这将创建红色UIView,但它似乎嵌入到tableview中,因为当我上下滚动时,视图会随之移动

我要创建的内容

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

我已经读到,最好的方法是使用一个内置UITableView的UIViewController,但我不希望看到我的应用已经构建了多少


有人能帮我打造这个造型吗?提前感谢

您必须从
UIViewController
派生才能获得完整的布局控制

然后只需在情节提要中添加一个
UITableView
实例。正常约束它,边缘齐平,顶部齐平,并具有
customView.top
=
tableView.bottom
。为控制器设置一个正常的插座

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

当启用
viewdideappease()
时,还有一个技巧与清除所选单元格有关,但是
UITableViewController
没有什么特别之处——它只是一个
UIViewController
,具有内置的
tableView
属性,并自动分配委托和非常不灵活的布局

补遗是基于对如何解决这个问题的评论:这有点像是问有没有办法让螺丝刀把钉子钉进木头里。只要使用正确的工具。
UITableViewController
的顶级
view
属性是
UITableView
本身。请参见下文,在布局调试模式下,库存
UITableViewController
,除此之外没有任何代码

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

在故事板中重做这个VC真的没什么大不了的。毕竟,您在
cellforrowatinexpath
中的渲染代码以及您的数据源和委托通常不会发生任何更改

增编2:

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


谢谢您的回复。事实上我已经读过了。这是实现这一目标的唯一途径吗?我的应用程序现在已经构建得很满了,我想尽量避免重新构建我的主屏幕。你认为还有别的办法吗?谢谢你advance@Nick89使用
UIViewController
可能是最好的方法,除非您的
tableview
只有一个部分,否则您可以设置
viewForHeaderInSection
并使其“粘性”。@kye Hi-kye,您能告诉我如何添加它吗,我以前没有添加过?@BaseZen感谢您再次修改您的答案,尽管我是使用PFQueryTableViewController设置的,但我是否仍然可以转换为普通VC?@Nick89您只需在您的tableview中添加一个
viewForHeaderInSection
。我认为默认情况下,
UITableView
会粘贴标题(滚动时会显示标题)。请记住,这不会重新创建所需的布局(显示屏幕截图),最好的选择是上面回答中所述的
UIViewController