UITableView显示问题

这篇博客探讨了如何处理UITableView中显示的多余分割线问题。当数据源为空时,通过设置separatorStyle来去掉分割线;而在数据存在时,通过设置tableFooterView为透明背景的UIView来隐藏底部的分割线。同时,文中还提到了防止UITableView头部视图粘性的实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

UITableView隐藏多余的分割线

plain类型的tableview当显示的数据很少时,下面的cell即使不显示数据也会有分割线,可以通过下面这个函数去掉杜宇的分割线。

- (void)setExtraCellLineHidden: (UITableView *)tableView

{

    UIView *view = [UIViewnew];

    view.backgroundColor = [UIColorclearColor];

    [tableViewsetTableFooterView:view];

    [view release];

}


当tableview的dataSource为空时,也就是没有数据可显示时,该方法无效,只能在numberOfRowsInsection函数,通过判断dataSouce的数据个数,如果为零可以将tableview的

separatorStyle设置为UITableViewCellSeparatorStyleNone去掉分割线,然后在大于零时将其设置为

UITableViewCellSeparatorStyleSingleLine

1、加方法
-(void)setExtraCellLineHidden: (UITableView *)tableView
{
    UIView *view = [UIView new];
    view.backgroundColor = [UIColor clearColor];
    [tableView setTableFooterView:view];
    [view release];
}
 
2、在

- (void)viewDidLoad

{

    [super viewDidLoad];

    //设置tableView不能滚动

    [self.tableView setScrollEnabled:NO];

    //在此处调用一下就可以啦 :此处假设tableView的name叫:tableView

    [self setExtraCellLineHidden:self.tableView];

}

 

在iOS4.3和iOS5.0中通过:值得注意的是在iOS4.3中可以直接设置footer为nil,但是在5.0不行,因为UITableView会默认生成一个Footer。(详见iOS Release Notes中的说明:Returning nil from the tableView:viewForHeaderInSection: method (or its footer equivalent) is no longer sufficient to hide a header. You must override tableView:heightForHeaderInSection: and return 0.0 to hide a header.)

一个关于tableview的细节问题

当tableview style设置为ground时,每个section的header会跟随tableview一起上下滑动;当style设置为plain时,每个section的header会悬浮在屏幕最上面,直到下一个section的header划过来,把当前的替换掉。现在的问题是,可以在style为plain时,让header也跟随tableview一起上下滚动吗,而不停在屏幕最上的部分。。。。大家有遇到这个问题的多多指点交流下 
也就是如下两图的区别

//去掉UItableview headerview黏性 
- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    if (scrollView == self.myTableView) 
    { 
        CGFloat sectionHeaderHeight = YOUR_HEIGHT; 
        if (scrollView.contentOffset.y<=sectionHeaderHeight&&scrollView.contentOffset.y>=0) { 
            scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0); 
        } else if (scrollView.contentOffset.y>=sectionHeaderHeight) { 
            scrollView.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, 0, 0, 0); 
        } 
    } 
}

最好的解决办法是把这个view赋给

 myHeaderView  为自己创建的view 加在tableheadview 上
 self.tableView.tableHeaderView=myHeaderView;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值