1、UITableView需要一个数据源【dataSource】来显示数据(只要遵循UITableViewDataSource协议都可以作为数据源);如果要显示分组,需要更改style属性默认是plain(headView、footerView会有悬浮的效果),改为Group(可以在属性面板上更改);
设置控制源为控制器;可以代码实现,也可以通过storyboard连线的方式;
tableView的属性:row height(设置整体的行高)默认的行高是44;如果需要实现每一行的高度需要实现代理方法;
separatorStyle:设置分割线的样式(是一个枚举型);
separatorColor:设置分割线的颜色;
editing:是否可以编辑(可以实现删除功能,设置YES会一直显示),实现编辑的工能,都是通过代理实现的;
以下的方式是代理实现的:
tableHeaderView:可以设置头部试图(但是在设置View的位置的时候,只有高度有作用),比如说广告等;
tableFooterView:可以设置尾部的视图(但是只有X和Height值有效果);
sectionIndexTitleForTable:设置每一组的索引值;可以实现自动跳转;
didSelectRowAtIndexPath:监听点击cell事件;
#pragma是编译形的注释;一般都是用在代理方法、数据源方法前面,方便查找;
实现协议中的方法:控件中有多少组数据、每一组占有多少行、每一行显示的数据(返回的类型:UITableViewCell继承与UIView)其中有一个NSIndex参数里面有一个section(组号),row(行号);
创建cell初始化的时候:使用initWithStyle:使用默认,设置重用标识符;在设置数据的时候:
cell里面有一个自带的textLable标签;可以设置标题。
imageView可以设置图片。
accessorType:可以设置指示器;
accessorView:可以自己设置指示视图,但是位置是固定的,只能设置大小;
backgroundColor,backgroundView都可以设置cell的背景颜色,但是后者的优先级高于前者;而且后者不用自己设置frame,会自动填充整个cell;
selectBackgroundView:设置cell选中后的颜色,默认是灰色;
detailTextlable设置小文字,细节说明(但是在默认的style模式下面,是不显示的,要改为_SubTitle风格);
2、在现实tableView的时候,如果不是Group属性,窗口显示的时候会和系统状态栏重合;
需要隐藏状态栏;可以使用下面的方法;
-(BOOL)prefersStatusBatHidden{
return YES;
}
3、TableView的优化(cell的重用):
在tableView控件创建的时候,内部自带了一个重用池。在cell移除屏幕不能显示的地方的时候,会将cell放到重用池里面储存;需要显示一个新的cell的时候首先应该使用重用池里面的cell;如果重用池里面没有对应的cell(一个tableView里面显示的cell类型可能不一样,所以在取用的时候需要判断重用标示符),那么自己创建一个。这样节省了内存;
实现:UITabelViewCell *name = [tableView dequeueReusableCellWithIdentfier:@“标识符”];
4、在弹框中显示文本框:Alert.AlertViewStyle这是一个枚举类型;
获取弹框中的文本框:[Alert textFieldIndex:[]];这是IOS8在弹框中添加文本框方法,现在不推荐使用;
当设计更改cell中的数据的时候;需要得NSindexParh数据的时候,可以使用Alert空间的Tag值设置为Row,这样便能知道是点击了那个一个cell(前提是只有一个分组);
更改cell数据,必须直接更改数据模型;然后刷新数据;可以调用方法[tableView reloadData](全局刷新);
方法reloadRowAtIndexPath:表示需要刷新行的集合 withRowAnimation:刷新时的动画】;
5、GCD多线程方法:dipatch_after方法:第一个参数是延迟的时间,block里面的代码段是需要延迟执行的代码;
6、 // 设置分割线颜色的
_tableView.separatorColor = [UIColor redColor];
// 侵蚀 , 分割线样式
_tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
// top, left, bottom, right , 上, 下 是没有效果的
// 设置分割线的范围。设置左边的时候会影响都文字的显示
_tableView.separatorColor = [UIColor redColor];
// 侵蚀 , 分割线样式
_tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
// top, left, bottom, right , 上, 下 是没有效果的
// 设置分割线的范围。设置左边的时候会影响都文字的显示
_tableView.separatorInset = UIEdgeInsetsMake(0, 0, 0, 0);
7、设置滚动到指定的一行,选择到这一行的位置,这里选的时底部、是否有动画;
[_tableViewscrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottomanimated:YES];
8、在自定义cell时,添加子控件的时候,是在self.content;
9、获取文本框的Size:
CGSize contentMaxSize = CGSizeMake(contentLabelWidth, MAXFLOAT);
// NSFontAttributeName 字体的大小
NSDictionary *attributesDict = @{NSFontAttributeName:[UIFont systemFontOfSize:15]};
#warning 计算文本实际宽高的时候, 计算的字体大小要和label中设置的字体大小保持一致
// 根据限定的条件, 来计算text 真实的宽高
// NSFontAttributeName 字体的大小
NSDictionary *attributesDict = @{NSFontAttributeName:[UIFont systemFontOfSize:15]};
#warning 计算文本实际宽高的时候, 计算的字体大小要和label中设置的字体大小保持一致
// 根据限定的条件, 来计算text 真实的宽高
CGSize contentRealSize = [weiboModel.text boundingRectWithSize:contentMaxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:attributesDict context:nil].size;