将子视图添加到UITableViewController

时间:2014-05-27 16:32:55

标签: ios objective-c uitableview

我正在使用带有一些单元格的UITableViewController。我的问题是我需要在tableview前面有一个静态按钮,但是当我添加按钮视图时,它会随着tableview滚动向上和向下移动。
这是我在viewDidLoad中的代码:

[button setFrame:CGRectMake(self.view.frame.size.width - 55, self.view.frame.size.height - 55, 50, 50)];
[button setBackgroundColor:[UIColor redColor]];
[[button layer]setMasksToBounds:YES];
[[button layer]setCornerRadius:25.0];

[self.view addSubview:button];
[self.view bringSubviewToFront:button];

我在viewWillLayoutSubviews中添加了这一行以支持方向:

[button setFrame:CGRectMake(self.view.frame.size.width - 55, self.view.frame.size.height - 55, 50, 50)];

无论tableview内容视图偏移如何,我都需要将按钮设置为静态。有谁知道我做错了什么?

修改

在测试你的答案后,这解决了我的问题:

我在contentOffset.y方法中将setFrame添加到我的按钮viewWillLayoutSubviews。我也尝试使用scrollView委托但不需要它,因为第一种方法是完成所有工作。

    - (void)viewWillLayoutSubviews
{
    [button setFrame:CGRectMake(self.view.frame.size.width - 55, self.tableView.contentOffset.y + self.view.frame.size.height - 110, 50, 50)];
}

就是这样,按钮保持静止。

按钮y起源中的额外减去110是因为我在视图中的高度和tabBar

感谢大家。你的答案非常有用。

3 个答案:

答案 0 :(得分:4)

这里有2个选项。

  1. 转换为使用带有UIViewController的{​​{1}}而不是UITableView。它不应该做太多工作,然后您可以将UITableViewController和按钮添加为根UITableView的子视图。

  2. 如果您想继续使用UIView,则需要实施UITableViewController并在滚动表格时修改按钮的框架,使其显示为静态。您还可以在表格中添加scrollViewDidScroll:,以便滚动内容超过自定义视图。

答案 1 :(得分:0)

如果您的tableview只有1个部分,您也可以将此button添加为此部分的标题

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
   // Build my view and return it
}

- (CGFloat)tableView:(UITableView *)aTableView heightForHeaderInSection:(NSInteger)section
{
   // Return the height
}

答案 2 :(得分:0)

您的UITableViewController需要是tableView的scrollViewDelegate。实施scrollViewDidScroll:以更改按钮框架/位置。

一个例子是将按钮的origin.y设置为scrollView.contentOffset.y应该使按钮与tableView的顶部齐平。