iOS开发学习笔记——表格1(UITableView)

来源:互联网 发布:sql server 百度网盘 编辑:程序博客网 时间:2024/05/01 19:15


UITableView的使用

相关官方文档参考:Table View Programming Guide for iOS


使用表格的基本规则

1、          表格使用的数据源一般放在数组中

2、          遵循的协议UITableViewDataSource  、UITableViewDelegate

3、          使用表格必须实现三个代理协议方法(确定表格的块、行、每行的内容)

4、          数据源(一般为控制器)根据索引路径(indexPath:即定位到唯一的一个单元格)为某一个单元格提供数据

5、                      索引路径是NSIndexPath对象,拥有两个属性:段(section)、行(row),即通过这两个属性定位UITableView中的唯一一个单元格cell

6、          掌握代理方法实现点击单元格事件响应(打开下一页。。。。。。)【didSelect….】

7、          使用代理方法编辑单元格[editActionForRowAtIndexPath  、   will/didEditing…..]


实现步骤:

                   实现editActionsForRowAtIndexPath:方法  返回值为数组

                        创建UITableViewRowAction对象(需要几个操作,创建几个)

                        刷新表格:对tableview的cell进行操作后,一定记得需要重新刷新表格,更新样式

装入数组返回。

8、          对表格进行编辑后一定记得刷新表格【reloadData】

学习内容源于:宏创学院 » UITableView详解:1-数据源方法


对表格进行增删

注意点:

1、确定删除位置

2、处理数据源【特重要,不然会发生错误终止,因为行数不对应/不够,】

3、删除或插入行

具体代码参考:

/**     *  选择评分     */    func tableViewSelectScore(){        self.tableview?.beginUpdates() //开始更新表格(一般是用于插入或删除行)        let tempIndexPath = [NSIndexPath(forRow: 2, inSection: 0)] //首先确定哪一个路径改变(某一段的某行(基数是从0开始的)))        if showScore{//如果已经点开拉评论            //说明评论已经打开,需要取消掉评论行            //1.取消前需要处理数据源,行数减少一个            self.titleArray.removeAtIndex(2)            //2移除那行            self.tableview?.deleteRowsAtIndexPaths(tempIndexPath, withRowAnimation: UITableViewRowAnimation.Right)//从右边划出            self.showScore = false  //如果是有一个可选显示的,可以设一个标记变量        }else{        self.titleArray.insert("", atIndex: 2)   //很重要,在表格对应的数据源添加数据,不然就会发生表格行数不够的错误,引起程序终止        self.tableview?.insertRowsAtIndexPaths(tempIndexPath, withRowAnimation: UITableViewRowAnimation.Left) //插入位置是【参数是数组】,及动画效果(从左到右)        self.showScore = true  //显示星星        }                self.tableview?.endUpdates() //结束更新    }

使用提示:

1、表格视图的Footer 与header,注意与sectione的footer和header不是同一个宏创学院 » UITableView详解:13-TableView的Header与Footer

2、TableView中,一般情况下都需要实现上拉刷新与下拉加载操作。这两个功能可以使用国内开发者开发(国内大神李明杰)的一款优秀框架–MJRefresh来实现。

3、如何在表格右侧添加序号栏,使用以下协议方法:

-(NSArray <NSString *> *) sectionindexTiltleForTableView:(UItableView *) tableview

显示的序号内容由数组提供。

3、如何不显示空表格的分割线?

使用如下语句self.table.tableFooterView = [[UIView alloc] init];

或者:将UITableView的separatorStyle属性设置为UITableViewCellSeparatorStyleNone即可


表格使用之UITableViewCell

 

1、系统单元格组成

单元格(UITableViewCell)是tableView的组成单元,每一个单元格都是一个UITableViewCell对象,默认情况下,一个单元格具有一个icon图片、一个title、一个detail title,以及一个accessory

2、系统自带单元格样式是?(四个)


3、使用单元格时更常用的是自定义单元格

 

4、单元格的配置细节(在cellForAtRowIndexPath方法中实现)

在UITableView内部有一个缓存池,使用 (UITableViewCellStyle) reuseIdentifier:(NSString *)方法指定一个可重用标识,就可以将这个cell放到缓存池

a、          设置常量,获取到IB中TableViewCell中Identifier(在IB中应该设置,否则可能出错)

b、          获取cell(从缓冲池中),使用dequeueReusableCellWithIdentifier方法实现,【注意,在后面转换为UITAbleViewCell(as! UITAbleViewCell)

c、           获取数据源

d、          设置Cell的内容

部分代码:

[objc] view plain copy
  1. override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {  
  2.         let cellIdentifier = "MealTableViewCell" // 记得在定义cell时命名  【易漏】]与IB中cell关联[为什么不用control+拉了】  
  3.         let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! MealTableViewCell  //将其转换为自定义cell类对象  
  4.         let meal = meals[indexPath.row]  //获取显示内容数据  
  5.           
  6.         //设置Cell的内容  
  7.         cell.nameLabel.text = meal.name  
  8.         cell.photoImageView.image = meal.photo  
  9.         cell.ratingControl.rating = meal.rating  
  10.          
  11.   
  12.         return cell  
  13.     }  



学习内容源于:宏创学院»UITableView详解:4-了解单元格(UITableViewCell


表格(UITAbleView)->组/块/段(section)

 

1、          如果使用组,那么数据源就应该放在二维数组

2、          记得设置section数目

3、          使用组块,在IB中的TableViewController属性里的样式必须选择Grouped,否则还是会按照普通表格显示。

4、          如果section的header以及footer仅仅需要显示一些文字提示,如下图所示,则可以直接调用tableview的代理方法titleForHeaderInSection返回值为String)来设置

5、          可以设置sectionIndexTitlesForTableView方法显示索引内容(右侧显示),还可以设置索引的各种属性(颜色、背景、点击背景)

6、          【tip】可以通过清除背景颜色达到索引的整体一致

 

二、自定制header/Footer(基本通过代码完成)

 

1、          还需要添加一些UI控件或定制样式,这就需要通过tableview的代理方法viewForHeaderInSection返回值为UIView)内进行定制

2、          定制思想:创建需要的控件对象,配置好控件对象,创建一个视图对象,将控件对象添加到视图对象并布局好即可,做好相应的响应处理(必要时)

学习内容源于宏创学院»UITableView详解:6-分段(Section


0 0