清除节标题上方的UITableViewCells

时间:2013-09-12 16:52:24

标签: ios objective-c uitableview

我有一个UITableView,如下图所示:

Before scroll:
|         |
|         |
|         |  < Clear cell, showing view below table
|         |
|---------|
| section |  < Section header
|---------|
|    1    |
|    2    |
|    3    |
|    4    |
|    5    |


After scroll:
|         |
|         |
|    1    |  < Don't want to see these cells above the section
|    2    |
|---------|
| section |  < Section header
|---------|
|    5    |
|    6    |

我在第一部分使用了一个透明单元格,因为我希望人们甚至可以从屏幕顶部滚动表格。

如何确保部分标题上方的单元格不可见?

1 个答案:

答案 0 :(得分:1)

我已经实现了这个方法,让我的tableview在向上滚动时停在单元格1,也许你可以根据你的场景进行调整。

int start;
int stop;

-(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView {

    NSArray *paths = [self.tableView indexPathsForVisibleRows];
    @try{
    start = [[paths objectAtIndex:0] row];
    }
    @catch (NSException* NSRangeException) {
        NSLog(@"exception");
    }
}


    -(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{

        NSArray *paths = [self.tableView indexPathsForVisibleRows];
        @try{
          stop = [[paths objectAtIndex:0] row];
        }
        @catch (NSException* NSRangeException) {
            NSLog(@"exception");
        }
        if(stop == 0 && start > 1){
            [UIView animateWithDuration:0.35 animations:^{
                [scrollView setContentOffset:CGPointMake(0, 44)];
            }];
        }

    }

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        if(indexPath.row == 0){

                self.tableView.contentOffset = CGPointMake(0, 44);

        }
    ......
    }