要实现表格数据形式 , 最常用的做法就是使用UITableView
UITableView继承自UIScrollView, 因此支持垂直滚动,而且性能极佳
2. UITableView的两种样式(分组与不分组)
@property (nonatomic, readonly) UITableViewStyle style;
UITableViewStyle是一个枚举
typedef NS_ENUM(NSInteger, UITableViewStyle) { UITableViewStylePlain, // 平滑样式 UITableViewStyleGrouped // 分组样式 };
2. UITableView要展示数据,首先要设置数据源
设置数据源之后,当UITableView需要展示数据的时候,它会 主动向它的数据源发送消息(调用方法),根据方法的返回值,它就知道显示多小组,每组多小行,每行什么内容
也就是说,只要设置了数据源,并且数据源实现了协议内的方法,UITableView就会主动展示数据
//UITableView内部属性,需遵守<UITableViewDataSource>协议 @property (nonatomic, assign) id <UITableViewDataSource> dataSource;
3. 设置数据源后,实现协议内相应的方法便可展示数据
以下3个方法,顺序有严格要求,并且numberOfRowsInSection方法,与cellForRowAtIndexPath方法是必须实现的
//可选方法,设置UITableView中一共有多小个分组, 默认是1(如果不设置就是1) - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView; //必须实现方法,第section组有多小行 //也就是说,numberOfSectionsInTableView方法返回的数值是多小,这个方法就会调用多小次,每次传入的section值会递增 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section; //每一行显示怎样的内容,返回UITableViewCell. //indexPath是对象,描述的是唯一的一行,它有两个属性,一个是section,一个是row //也就是说,numberOfSectionsInTableView返回了多小组,numberOfRowsInSection返回是多小行,这个方法就会根据一共有多小组多小行去调用多小次, //凭indexPath.section组的indexPath.row行 得知每一行 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
//其他一些可选方法: // 1. //第section组显示怎样的头部 - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section; // 2. //第section组显示怎样的尾部 - (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section; // 3. // 返回值是NSArray 调用这个方法,只要返回一个数组给UITableView ,它就会将数组显示到右面 - (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView { //去数组里面,把数组里面每个title属性拿出来,并且装到数组中返回 return [self.groups valueForKeyPath:@"groupTitle"]; } // 4. //全部刷新 [tableView reloadData]; // 5. //局部刷新 //传入一个数组 [tableView reloadRowsAtIndexPaths:(NSArray *) withRowAnimation:(UITableViewRowAnimation)]