iOS学习笔记—— UItableView 控件的简单使用

来源:互联网 发布:js微信通讯录字母索引 编辑:程序博客网 时间:2024/05/22 18:38

        UITableView 可以说是iOS开发中最常用的控件,除了游戏之外,几乎所有的应用中独会出现他的身影。

        

        使用UITableView控件需要遵守两种协议 UITableViewDelegate和 UITableViewDataSource

        常用方法如下:

            1.返回(每个分区)表单元个数(行数)

                 - (NSInteger) tableView: (UItableView *) tableVIew

              numberOfRowsInSection: (NSInteger)section   

            2.返回表单元信息

                - (UITableViewCell) tableView: (UITableVIew *) tableView

                          cellForRowAtIndexPath: (NSInteger) indexPath

            3.分区数

            - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

               设置分区名称

            - (NSString *)tableView:(UITableView *)tableView 

           titleForHeaderInSection:(NSInteger)section;

            4.选中某行后的响应函数

                 - (void) tableVIew: (UITableView *)tableView

   didSelectRowAtIndexPath: (NSIndexPath *) indexPath


            5. 编辑表单元(添加、删除)

                - (void) tableView: (UITableView) tableView

            commotEditingStyle: (UITableViewCellEditingStytle)editingStytle

             forRowAtIndexPath: (NSIndexPath *) indexPath

              .p.s 指定删除按钮标题

             - (NSString *) tableView: (UItableView *)tableView

titleForDeleteConfirmationButtonForRowAtIndexPath: (NSIndexPath *)indexPath

            6.表单元移动

            - (void)tableView: (UITableView *) tableView

   moveRowAtIndexPath: (NSIndexPath *) fromIndexPath

                   toIndexPath: (NSIndexPath *) toIndexPath

            .p.s 允许移动

            - (BOOL)tableView: (UITableView *) tableView

 canMoveRowAtIndexPath: (NSIndexPath *) indexPath 

           .p.s 允许编辑

            -(BOOL)tableView: (UITableView *) tableView

  canEditRowAtIndexPath:(NSIndexPath *)indexPath

       

           7.右侧添加一个索引表

            - (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView

           8.获取某一行的信息

            - (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath;

           9.设置表单元高度(行高)

            - (CGFloat) tableView: (UItableView *) tableView

     heightForRowAtIndexPath: (NSIndexPath *) indexPath

           10.设置单元格颜色

             - (void) tableView: (UITableView *) tableVIew

                  willDisplayCell: (UITableViewCell *) cell

           forRowAtIndexPath: (NSIndexPath *) indexPath

           11. 设置表单元文本缩进

            - (NSInteger) tableVIew: (UITableView *) tableView

indentationLevelForRowAtIndexPath: (NSIndexPath *) indexPath


          12. 添加页眉、页脚

            - (NSString *) tableView: (UITableView) tableView

            titleForHeaderInSection: (NSInteger) section

            - (NSString *) tableView: (UITableView) tableView

             titleForFooterInSection: (NSInteger) section


        下为常用代码片段:

        1.设置表单元信息

- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{    static NSString *CellWithIdentifier = @"Cell";    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellWithIdentifier];    if (cell == nil) {        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellWithIdentifier];    }    NSUInteger row = [indexPath row];    cell.textLabel.text = [dataList objectAtIndex:row];    return cell;}

        2. 进入编辑状态(删除,移动)

- (IBAction)Del:(id)sender {    [_tableView setEditing:!_tableView.editing animated:YES];        if (_tableView.editing)        [_DeleteButtonTitle setTitle:@"Done" forState:UIControlStateNormal];    else        [_DeleteButtonTitle setTitle:@"Delete" forState:UIControlStateNormal];}

        3.左滑删除

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{                       // 左滑删除    if (editingStyle == UITableViewCellEditingStyleDelete) {        [dataList removeObjectAtIndex: indexPath.row];        [_tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject: indexPath] withRowAnimation: UITableViewRowAnimationAutomatic];    }}

        4.选中并标记某行

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{                       // 选中响应函数(标记)    UITableViewCell *cellView = [tableView cellForRowAtIndexPath:indexPath];    if (cellView.accessoryType == UITableViewCellAccessoryNone)         cellView.accessoryType = UITableViewCellAccessoryCheckmark;    else        cellView.accessoryType = UITableViewCellAccessoryNone;}
          5.移动代码

- (BOOL)tableView:(UITableView *)tableViewcanMoveRowAtIndexPath:(NSIndexPath *)indexPath {    return YES;}- (void)tableView:(UITableView *)tableViewmoveRowAtIndexPath:(NSIndexPath *)fromIndexPath      toIndexPath:(NSIndexPath *)toIndexPath {    NSUInteger fromRow = [fromIndexPath row];    NSUInteger toRow = [toIndexPath row];        id object = [dataList objectAtIndex:fromRow];    [dataList removeObjectAtIndex:fromRow];    [dataList insertObject:object atIndex:toRow];}







   


0 0
原创粉丝点击