IOS UITableView 学习记录

1.    tableView中的数据发生改变后,往往UITab 了 View中的数据没有更新,通常需要滚动后才更新。

       这是因为重绘机制的问题, 解决方案有:在需要刷新界面的地方加入:

        [self.tableView reloadData];

        [self.tableView reloadSectionIndexTitles];

        或者在viewWillAppear中加入这两句:

             - (void)viewWillAppear:(BOOL)animated{

                    [self.tableView reloadData];

                    [self.tableView reloadSectionIndexTitles];

            }


        下面转自 http://blog.sina.com.cn/s/blog_7ac99d1801016jgh.html

        这两句可以起到刷新UITableViewCell的作用,但是如果section的数据发生了改变,则没有被刷新。

        后来在    http://stackoverflow.com/questions/8306792/uitableview-reload-section 发现了一个给出的            

        方法:

            - (void)reloadSections:(NSIndexSet *)sections withRowAnimation:

                                                                                    (UITableViewRowAnimation)animation

        完整的可以这么写:

                NSRange range = NSMakeRange(section, 1);

                NSIndexSet *sectionToReload = [NSIndexSet indexSetWithIndexesInRange:range];                                 [self reloadSections:sectionToReload withRowAnimation:rowAnimation];


2. 自定义UITableViewCell:

    (1)可以在storyborad的tableViewCell中布局,然后设置控件的tag,cell通过getTag方法可以获得对

             应的控件,然后再对这些控件 设值。

    (2)在 tableView: cellForRowAtIndexPath: 方法中,用代码写控件,然后调用cell的addSubView

             方法,将这些控件加到cell中,即可自定义cell。


3. 自定义section

    用到两个方法:

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

        UIView* myView = [[UIView alloc] init];

        myView.backgroundColor = [UIColor whiteColor];

        // 自定义View

        return myView;

    }


    - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {

        // 设值section的高度

         return 30;

    }


4.隐藏UITableViewCell的分隔线

    [self.myTableView setSeparatorStyle:UITableViewCellSeparatorStyleNone]; 

    UITableViewCellSeparatorStyle有如下几种 

    typedef NS_ENUM(NSInteger, UITableViewCellSeparatorStyle) {

        UITableViewCellSeparatorStyleNone,

        UITableViewCellSeparatorStyleSingleLine,

        // This separator style is only supported for grouped style table views currently

        UITableViewCellSeparatorStyleSingleLineEtched  

    };

5.  去除点击效果

    cell.selectionStyle = UITableViewCellSelectionStyleNone;


6. 点击效果:点击之后消失

    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 


7. uitableview处理section的不悬浮,禁止section停留的方法,主要是这段代码

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

    CGFloat sectionHeaderHeight = 50;

    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);

    }

}


8. 设置tableView的背景为透明方法:

单元格要再设为透明,Cell.backgroundColor=[UIColor clearColor];


你可能感兴趣的:(ios,UITableViewCell)