iOS学习——UITableView(一)

  哈哈哈,初次写写博客。来记录记录我学习iOS过程中的学到的一些东西,并不想照搬书上的文字内容,仅是写写我自己的学习记录。各位随便看看。

  iOS的UITableView是开发中用得最广泛的控件,像微信、各种新闻、知乎日报等app的主体差不多就是它了,手机自带的通讯录、短信等也使用了它。可以看出它的功能很强大,用途广泛,在书上学习都要用好几章,我也不打算一口气写完,想分成几篇来记录。

  UITableView的功能主要是用于显示数据列表,可以显示很多行数据,不过它的列只有一列(有多列的列表视图UICollectionView)。

  现在先来做个简单的UITableView的应用:

  1.用Xcode新建一个iOS Application,选择使用Single View Application模板,项目名称为SimpleTable;

     

  2.修改Main.storyboard文件。

  从库面板里面选择Table View控件(注意不是Table Viw Controller),把它拖到默认的试图控制器上。之后可以在模拟器上运行一下,可以看到app的界面上有了些空白行,这是因为表视图并没有任何数据可以显示,也没有实现显示数据的方法。所以接下来,要指定表视图的数据源和委托对象。

    

按住control、选择表视图拖到View Controller图标放开(或者直接用鼠标右键拖),会出现一个弹出框,选择dataSource,接着再拖一次,选择delegate。这样就把表视图的数据源和委托对象都指定为这个View Controller视图对应的控制器类了。在表视图对应的属性检查器中也可以查看表视图指定的dataSource和delegate对象。

      

  3.修改ViewController.h文件,让它实现UITableViewDataSource协议和UITableViewDelegate协议。

@interface ViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>

@end 

  4.修改ViewController.m文件,定义一个数组,用于存储需要显示的数据。即添加如下代码(红色部分)

@interface ViewController ()
@property (copy, nonatomic) NSArray *datas;
@end

  修改 - (void)viewDidLoad 方法,在这里初始化数组,可以按照自己的意愿让表视图显示什么内容。

- (void)viewDidLoad {
    [super viewDidLoad];
    // 这里只是简单的显示一些简单的文字,实际情况会根据需要从数据库、list文件、网络等读取数据,也有可能不止初始化这一个数组
    self.datas = @[@"data 1", @"data 2", @"data 3", @"data 4", @"data 5", @"data 6", @"data 7", @"data 8", @"data 9",
                   @"data 10", @"data 11", @"data 12", @"data 13", @"data 14", @"data 15"];
}

  这样,数据源有了,接下来就该实现显示数据的方法了。

  5.在ViewController.m文件里面添加实现方法。

  需要实现的方法有

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

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    // 其实tableView可以被分成很多section,每个部分在视图上是独立分开的,在此app中,不区分section,所有的数据都显示在一个部分,所以直接返回datas的长度
    return [self.datas count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    // 定义标示符
    static NSString *SimpleTableIdentifier = @"SimpleTableIdentifier";
    // 声明一个cell对象,这个方法是从可重用队列里面取出一个表格单元,如果没有可重用单元格,就会返回nil,就需要判断
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SimpleTableIdentifier];
    if (cell == nil) {
        // 如果没有可重用的单元格对象,就使用标示符重新创建一个单元格对象,
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:SimpleTableIdentifier];
    }

    // textLabel是默认的单元格包含的一个文本标签,设置它的text属性为datas中的数据
    cell.textLabel.text = self.datas[indexPath.row];
    return cell;
}

这样,再运行一下app,得到如下结果

  

  

时间: 2024-11-10 16:24:29

iOS学习——UITableView(一)的相关文章

iOS学习——UITableView表视图单元样式

UITableViewCell默认的单元有4种: 1.UITableViewCellStyleDefault 2.UITableViewCellStyleSubtitle 3.UITableViewCellStyleValue1 4.UITableViewCellStyleValue2 首先要介绍下,默认的单元格使用了3种不同的元素. 图像:如果指定的样式中包含图像,那么该图像将显示在单元的文本左侧. 文本标签:单元的主要文本. 详细文本标签:单元的辅助文本,通常用作解释性的说明或标签. 如何使

iOS学习笔记之UITableViewController&amp;UITableView

iOS学习笔记之UITableViewController&UITableView 写在前面 上个月末到现在一直都在忙实验室的事情,与导师讨论之后,发现目前在实验室完成的工作还不足以写成毕业论文,因此需要继续思考新的算法.这是一件挺痛苦的事情,特别是在很难找到与自己研究方向相关的文献的时候.也许网格序列水印这个课题本身的研究意义就是有待考证的.尽管如此,还是要努力的思考下去.由于实验室的原因,iOS的学习进度明显受到影响,加之整理文档本身是一件耗费时间和精力的事情,因此才这么久没有写笔记了. M

iOS学习笔记(4) — UITableView的 重用机制

iOS学习笔记(4) — UITableView的 重用机制 UITableView中的cell是动态的,在使用过程中,系统会根据屏幕的高度(480)和每个cell的高度计算屏幕中需要显示的cell的个数.比如,cell高度为90.那么480 / 90 = 5 + 1,也就是说最多有6个cell能显示在屏幕中. 系统会创建1个cel池,无论tableview有多少行都只创建6个cell放在池中.当某行移出屏幕的时候,将这个cell放回在池中:当某行需要显示在屏幕中时,从池中取出一个cell. 重

IOS学习之UITableView滚动到指定位置

IOS学习之UITableView滚动到指定位置 方法很简单: - (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated 有些需要注意的地方: 如果在reloadData后需要立即获取tableview的cell.高度,或者需要滚动tableview,那么,直接在reloadDa

iOS学习笔记—— UItableView 控件的简单使用

UITableView 可以说是iOS开发中最常用的控件,除了游戏之外,几乎所有的应用中独会出现他的身影. 使用UITableView控件需要遵守两种协议 UITableViewDelegate和 UITableViewDataSource. 常用方法如下: 1.返回(每个分区)表单元个数(行数) - (NSInteger) tableView: (UItableView *) tableVIew numberOfRowsInSection: (NSInteger)section 2.返回表单元

IOS学习之UiTableView下拉刷新与自动加载更多,百年不变的效果

IOS学习之UiTableView下拉刷新与自动加载更多,百年不变的效果(五) 五一劳动节马上来临,小伙伴有妹有很激动哟,首先祝天下所有的程序猿节日快乐!这个五一对于我来说有点不一样,我的人生从这个五一就转弯了,爱情长跑8年的我结婚了,一会支付宝账号我会公布出去,请自觉打款!谢谢合作. 灯光闪起来: 舞蹈跳起来: 歌曲唱起来: -------------------------------------------------------------------------------------

2015最新iOS学习线路图

iOS是由苹果公司开发的移动操作系统,以xcode为主要开发工具,具有简单易用的界面.令人惊叹的功能,以及超强的稳定性,已经成为iPhone.iPad 和iPod touch 的强大基础:iOS 内置的众多技术和功能让 Apple设备始终保持着遥遥领先的地位. iOS学习路线:http://www.mobiletrain.org/page/ios.html 课程分  类 课程模块 模块介绍 课程内容 Part1C语言 C语言和Objective-C语言 C语言 Mac系统及常用工具.进制:C数据

iOS学习笔记(2)— UIView用户事件响应

iOS学习笔记(2)— UIView用户事件响应 UIView除了负责展示内容给用户外还负责响应用户事件.本章主要介绍UIView用户交互相关的属性和方法. 1.交互相关的属性 userInteractionEnabled 默认是YES ,如果设置为NO则不响应用户事件,并且把当前控件从事件队列中删除.也就是说设置了userInterfaceEnabled属性的视图会打断响应者链导致该view的subview都无法响应事件. multipleTouchEnabled  默认是NO,如果设置为YE

iOS学习--UIScrollView 原理详解

iOS学习--UIScrollView 原理详解 http://blog.csdn.net/yanfangjin/article/details/7898189 ScrollView UIScrollView UIScrollView为了显示多于一个屏幕的内容或者超过你能放在内存中的内容. Scroll View为你处理缩小放大手势,UIScrollView实现了这些手势,并且替你处理对于它们的探测和回应.其中需要注意的子类是UITableView以及UITextView(用来显示大量的文字).