/************************ singleView 取消 ViewController 作为根视图控制器 ************************/
//1.将Main.storyboard 删除
//2.到工程设置里面找到 main interface, 将Main删除
//3.在 AppDelegate 添加根视图控制器的选定
//练习: 新建SingleView工程, 取消ViewController作为根视图控制器; 并新建一个导航控制器作为self.window的根视图, 并将ViewController作为导航视图控制器的根视图控制器
/******************************* TableView *******************************/
// TableView 定义: 通常用来管理一组具有相同数据结构(定义成属性)
//基本设置:(用iphone6S会出现滑动时, 分割线闪烁)
self.tableview = [[UITableView alloc]initWithFrame:self.view.bounds style:UITableViewStylePlain];//UITableViewStyleGrouped: 分区划分
[self.view addSubview:self.tableview];
// 1.视图控制器对滚动的空间调节效果
self.automaticallyAdjustsScrollViewInsets = YES;//(YES: 从导航栏开始分配, 可能会出现bug)
// 2.分割线的设置
//(1)分割线的颜色
self.tableview.separatorColor = [UIColor redColor];
//(2)分割线的样式(UITableViewCellSeparatorStyle)
self.tableview.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
//(3)分割线的长短(结构体)(分割线相对于tableView上下左右的距离)(上下无效)
self.tableview.separatorInset = UIEdgeInsetsMake(0, 30, 0, 30);
// 3.行高(默认是44)
self.tableview.rowHeight = 100;
/********* TableView的两个协议<UITableViewDataSource, UITableViewDelegate> *********/
//
//一、UITableViewDataSource 数据源的协议方法
self.tableview.dataSource = self;
//例子: 设置学生姓名数组(属性)
self.stuArr = @[@"aa", @"bb", @"cc"].mutableCopy;
// 两个必须实现的方法:
//1.section分区下的行数
// - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
//2.指定某行下显示怎样的细胞
// - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
//必须实现:
//1.section分区下的行数
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return self.stuArr.count;
}
//2.指定某行下显示怎样的细胞
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
//1.从重用池里面取出一个cell(取出一个被划出屏幕的cell ,目的: 节约内存)
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"reusepool"];
//2.如果取出的cell为空, 则创建一个cell
if (cell == nil) {
//类型设置成default, 无法显示副标题
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"reusepool"];
// NSLog(@"这是创建出来的cell");
}
// else{
// NSLog(@"这是重用的cell");
// }
//indecPath section:当前cell的分区; row:当前cell所在分区的行数
// cell的基本设置
//1.cell的标题
cell.textLabel.text = self.stuArr[indexPath.row];
//2.cell的副标题
cell.detailTextLabel.text = @"字母";
//3.cell的图片
cell.imageView.image = [UIImage imageNamed:@"2.jpg"];
//4.cell的选中样式
cell.selectionStyle = UITableViewCellSelectionStyleBlue;
//5.辅助视图的类型(右侧箭头)
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
//6.自定义视图
// cell.accessoryView
return cell;
}
//可选:
//3.设置分区个数, 如果不实现本方法, 默认是1
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return 1;
}
//4.设置页眉(页脚)的(分区)标题
-(NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section{
return @"你好";
}
//5.设置右侧的索引
-(NSArray<NSString *> *)sectionIndexTitlesForTableView:(UITableView *)tableView{
return @[@"1", @"2", @"3"];
}
// 二、UITableViewDelegate
self.tableview.delegate = self;
//可选:
//1.设置行高
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return 70;
}
//2.分区头(尾)的高度
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return 70;
}
//3.自定义分区头(尾)(视图)
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
UILabel *label = [[UILabel alloc]init];//frame设置无效
label.text = @"iOS";
return label;
}
//4.cell的点击方法(seletion) ***
-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath{
SecondViewController *svc = [[SecondViewController alloc]init];
[self.navigationController pushViewController:svc animated:YES];
//取消选中状态
[self.tableView deselectRowAtIndexPath:indexPath animated:YES];
}
}
UI - UITableView表视图 ( 一 )
最新推荐文章于 2023-06-06 19:39:55 发布