我的iOS学习历程 - UITableView(数据model的使用)

原创 2015年11月20日 21:42:00

今天学习的是UITableView :

首先将创建tableView的过程封装在一个方法里,让代码更好观察和修改:
最后会写一个类似于支付宝的页面,源代码点此下载

1.自定义初始化(这里的tableView有几种格式,一般使用plain和Grouped,前一个是普通的,后一个是分组的)

//  创建表视图
- (void)addTableView {
    UITableView *tableView = [[UITableView alloc] initWithFrame:[UIScreen mainScreen].bounds style:(UITableViewStyleGrouped)];
    //  设置代理和数据源
    tableView.delegate = self;
    tableView.dataSource = self;
    //  显示视图
    [self.view addSubview:tableView];
    [tableView release];
}

这里要注意的是必须要设置数据源的代理和代理,因为必须实现数据源和代理的方法才能显示出tableView

2.设置表头和表尾

//  设置整个tableView的表头和表尾
    //  只有高度能影响
    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(100, 10, 50, 100)];
    headerView.backgroundColor = [UIColor cyanColor];
    tableView.tableHeaderView = headerView;
    [headerView release];
    //  设置表头表尾的view
    UIView *footView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
    footView.backgroundColor = [UIColor blueColor];
    tableView.tableFooterView = footView;
    [footView release];

数据源协议必须实现的方法

3.返回分区数

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 3;
}

4.返回每个分区有多少行

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    return 5;
}

5.返回索引处(分别哪一个分区的哪一个行)的每一个cell(单元格)

有多少个cell就执行多少次(设置cell的内容)

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    //  标识符
    //  区分每一种cell的样式
/*
     UITableView重用:
     需要重用的集合 
     重用集合的作用:把滑出屏幕的cell(完全消失在屏幕上时)放出这个重用集合(备用),当屏幕下方需要新的cell进行展示的时候,开始重用
     方式是:首先系统会先去重用的集合中找看有没有cell可以重新使用,如果有就直接使用,如果没有就创建一个出来用
     */

   static NSString *indentifier = @"MyCell"; //  加static防止多次创建释放的过程
    //  去重用集合中按标识符寻找对应的cell
    UITableViewCell *cell = [tableView dequeueReusableHeaderFooterViewWithIdentifier:indentifier];
    if (cell == nil) {
        //  去创建新的cell
        //  释放cell的时候,只有创建出来的才需要去释放 从集合里取出来的不用去释放
        cell = [[[UITableViewCell alloc] initWithStyle:(UITableViewCellStyleSubtitle) reuseIdentifier:indentifier]autorelease];

    }
    //  赋值cell上的控件(从集合中取出来的也需要赋值) 
    //  设置cell上的标题
    cell.textLabel.text = @"xixi";
    cell.detailTextLabel.text = @"aa";
    //  设置cell上的图片
    cell.imageView.image = [UIImage imageNamed:@"1"];
    //  设置辅助按钮
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
    return [cell autorelease];
}
要注意的是:cell的创建方法是需要一个重复集合,每当一个cell消失在手机屏幕上时,就会被放入重复集合,而当每个cell创建的时候都会先去寻找一下重复集合有没有cell,有的话直接拿出来重复利用

6.设置每个分区的表头 和 表尾

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 50)];
    headerView.backgroundColor = [UIColor redColor];
    [headerView autorelease];
    return headerView;
}

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
    UIView *footerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 100)];
    footerView.backgroundColor = [UIColor redColor];
    [footerView autorelease];
    return footerView;
}

7.设置分区表头 和 表尾的高度

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
    return 50;
}

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    return 100;
}

8.设置每个分区中每行的高度

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return 50;
}

9.设置分区表头 标题

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {

    if (section == 0) {
        return @"a";
    }else if (section == 1) {
        return @"b";
    }else {
        return @"c";
    }
}

10.设置tableView右边 标题小按钮

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
    return @[@"a",@"b",@"c"];
}

下面是一个利用tableView和数据model的合作来写出类似于支付宝的一个页面:这里写图片描述
具体源代码在标题上下载.

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

我的iOS学习历程 - UITableView的编辑

今天学习的UITableView的编辑,是很重要的一个项目,例如通讯录的实现等都是通过这个来实现的

iOS编程------UITableView中图片的异步下载 / KVO监测Model图片下载

// // AppDelegate.h // UI17_imageDownLoader // // Created by l on 15/9/23. // Copyright (c) 2015...

IOS学习笔记-UITableView绑定数据实例

首先创建model,新建一个文件存放model类import UIKitclass testModel: NSObject { var Title:String init(title:...

IOS-UITableView数据独立

  • 2015-05-24 18:55
  • 424B
  • 下载

IOS学习笔记(10)UITableView展示数据 cell删除 构建页眉页脚

在TableView中展示分层数据 使用tableViewCells的缩进功能: -(UITableViewCell *)tableView:(UITableView *)tableVie...

iOS-使用表格视图UITableView

  • 2015-10-24 09:46
  • 4.09MB
  • 下载

【ios开发学习 - 第五课】UITableView使用

在开发iphone的应用时基本上都要用到UITableView,这里讲解一下UITableView的使用方法及代理的调用情况 - (void)viewDidLoad {     [sup...

IOS 开发学习30 UITableView的使用总结

一个简单的示例#import @interface ViewController : UITableViewController @property (nonatomic, retain) NSArr...
  • xundh
  • xundh
  • 2015-06-03 09:11
  • 702
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)