禁用tableHeaderView(不要与节标题混淆)滚动

Apo*_*orv 0 iphone uitableview ios

是否可以禁用tableHeaderView的滚动(不要与节标题混淆).现在每当我滚动表格时,表格中的视图也会滚动显示.

我在做什么:

  1. 我有一个UITableViewController子类.
  2. 在storyboard中,我使用的是静态表视图.
  3. 表格样式已分组,我添加了8个部分,每个部分都有一行.
  4. 在第1部分的顶部,添加了一个viewHeaderView视图.

在此输入图像描述

在此输入图像描述

我想在滚动表格时禁用标题为"Profile"的滚动视图.

PS:我知道如果我从UIViewController而不是UITableViewController继承我的类,这是可以实现的.但是我不想使用UIViewController,因为我使用storyboard来设计静态单元格,如果我使用UIViewController而不是UITableViewController,那么编译器会抛出警告"静态表视图仅在嵌入UITableViewController实例时才有效"

请告诉我哪个是实现此目的的最佳方法.是否可以使用我当前的方法禁用tableHeader的滚动,或者我是否需要使用UIViewController.

Tim*_*ose 5

只需使用UIViewController包含标题视图和容器视图的父级的嵌入segue .将您嵌入UITableViewController容器视图中.这个答案中有更具体的步骤.

如果你想要一切UITableViewController,你可以插入你自己的子视图做这样的事情:

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.header = [[UIView alloc] init];
    self.header.frame = CGRectMake(0, 0, self.tableView.bounds.size.width, 44);
    self.header.backgroundColor = [UIColor greenColor];
    [self.tableView addSubview:self.header];
    self.tableView.contentInset = UIEdgeInsetsMake(44, 0, 0, 0);
}
Run Code Online (Sandbox Code Playgroud)

然后操纵视图的位置scrollViewDidScroll和朋友:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    self.header.transform = CGAffineTransformMakeTranslation(0, self.tableView.contentOffset.y);
}
Run Code Online (Sandbox Code Playgroud)

我说"和朋友",因为你需要照顾像这样的角落案件scrollViewDidScrollToTop:.scrollViewDidScroll在滚动期间在每个显示周期中被调用,因此这样做看起来完美无瑕.