0

我有一个包含各种条目的 TableView。有时我需要向下滚动,有时只有几个条目,所以一切都是可见的。

我想要我的第一个单元格中的一些设置和过滤器,但它不应该是可见的,只有当用户向下滚动时。

我的尝试:

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
    float rowHeight = [self tableView:self.tableView heightForRowAtIndexPath:indexPath];
    self.tableView.contentOffset = CGPointMake(0, rowHeight);
}

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];

    [self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTopanimated:NO];

}

两者都没有工作。

对我的问题有什么建议吗?

4

3 回答 3

1

你在寻找这样的东西吗?

[self.tableView setContentInset:UIEdgeInsetsMake(t,l,b,r)];

这将改变tableView你想要的任何方式,但你绝对可以向后滚动。

于 2012-08-22T07:05:07.037 回答
0

在 TableView 委托方法中尝试您的逻辑

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    静态 NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    如果(单元格 == 零)
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    if (indexPath.row == 0) {
        //你的过滤器在这里
    }
    别的 {
        //显示单元格
    }
    cell.selectionStyle = UITableViewCellSelectionStyleNone;

    返回单元格;
}

此外,如果您不希望显示第一个单元格,只需编写

返回零;//对于 indexpath.row 的条件 == 0

并调整行的高度

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

    if (section == 0 && isDisplayThisSection) {//第一次可见

        UIView *headerView = [[[UIView alloc] initWithFrame:CGRectMake(0, 5, 320, 25)] autorelease];

        UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(17, 10, 300, 25)];

        [titleLabel setFont:[UIFont boldSystemFontOfSize:17.0]];

        titleLabel.text = @"临时测试";

        [titleLabel setBackgroundColor:[UIColor clearColor]];

        [headerView addSubview:titleLabel];

        [标题标签发布];

        [headerView setBackgroundColor:[UIColor clearColor]];

        返回标题视图;

    }
    return [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)] autorelease];

}

将值设置为 0

希望这有帮助!!

于 2012-08-22T07:16:43.597 回答
-1

在 TableView 委托方法中尝试您的逻辑

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    静态 NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    如果(单元格 == 零)
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    if (indexPath.row == 0) {
        //你的过滤器在这里
    }
    别的 {
        //显示单元格
    }
    cell.selectionStyle = UITableViewCellSelectionStyleNone;

    返回单元格;
}

此外,如果您不希望显示第一个单元格,只需编写

返回 ; //对于 indexpath.row 的条件 == 0

并调整行的高度

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;

将值设置为 0

如果你想像 Pull_to_Refresh 那样实现,你最好把你的逻辑写在

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

希望这有帮助!!

于 2012-08-22T07:02:54.403 回答