UI - UITableView表视图 ( 一 )

/************************ 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];
}   

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在iOS中,一个视图只能有一个UITableView。但是可以通过创建多个UITableView来实现一个视图中显示多个格的效果。以下是一个示例代码: 首先,你需要在视图控制器中添加多个UITableView的实例变量: ```swift class YourViewController: UIViewController { var tableView1: UITableView! var tableView2: UITableView! // ... } ``` 然后,在视图加载完成后,你可以创建和配置这些UITableView的实例: ```swift override func viewDidLoad() { super.viewDidLoad() // 创建第一个UITableView tableView1 = UITableView(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height/2)) tableView1.dataSource = self tableView1.delegate = self view.addSubview(tableView1) // 创建第二个UITableView tableView2 = UITableView(frame: CGRect(x: 0, y: view.frame.height/2, width: view.frame.width, height: view.frame.height/2)) tableView2.dataSource = self tableView2.delegate = self view.addSubview(tableView2) // ... } ``` 接下来,你需要实现UITableViewDataSource和UITableViewDelegate协议的相关方法来提供格的数据和处理交互事件。例如: ```swift extension YourViewController: UITableViewDataSource { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { if tableView == tableView1 { // 返回第一个UITableView的行数 return 10 } else if tableView == tableView2 { // 返回第二个UITableView的行数 return 5 } return 0 } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) if tableView == tableView1 { // 配置第一个UITableView的单元格 cell.textLabel?.text = "Table View 1 - Row \(indexPath.row)" } else if tableView == tableView2 { // 配置第二个UITableView的单元格 cell.textLabel?.text = "Table View 2 - Row \(indexPath.row)" } return cell } } extension YourViewController: UITableViewDelegate { func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { if tableView == tableView1 { // 处理第一个UITableView的行选中事件 print("Table View 1 - Row \(indexPath.row) selected") } else if tableView == tableView2 { // 处理第二个UITableView的行选中事件 print("Table View 2 - Row \(indexPath.row) selected") } } } ``` 这样,你就可以在同一个视图中使用多个UITableView了。记得在视图控制器中遵循UITableViewDataSource和UITableViewDelegate协议,并在视图加载完成后设置数据源和代理。 希望这能帮到你!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值