如何以编程方式在UITableView上添加UIView

时间:2014-06-16 20:50:27

标签: ios objective-c uitableview uiview

我想在我的UIView类和NavigationBar下的表视图中添加tableViewController。如果我这样添加:

[self.view addSubview:self.manualView];

它位于UITableView上方(实际上我想让它们在同一个z-index上)。我还想在用户按下某个按钮时以编程方式删除UIView。

3 个答案:

答案 0 :(得分:5)

UITableViewController's视图是UITableView,因此添加子视图可能不是您正在寻找的内容。我认为最好的解决方案是使用UIViewController代替。如果你给它一个覆盖整个(UITableViewController)视图的tableView,它的行为就像UIView

然后使用addSubview(以及@Literphor建议的removeSubview)的代码就可以了。

只要在添加表格视图后添加视图,堆叠就会自行处理。

答案 1 :(得分:2)

有两种方法可以解决这个问题。 天真(创建视图并将其添加到子视图):

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
view.backgroundColor = [UIColor blackColor];
[self.view addSubview:view];

这引入了一系列与布局布局和空间冲突相关的问题。

更好的解决方案: 通过以下方式返回表格相应部分的页眉视图或页脚视图:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

此方法是UITableViewDelegate协议的一部分,UITableViewController默认符合该协议。

答案 2 :(得分:0)

您可以使用[self.view removeSubview:self.manualView];来响应用户按下按钮。并且您无法使用相同的Z-index获得两个视图,但您可以通过参考Apple的管理视图层次结构部分来更改视图的深度UIView Documentation