码迷,mamicode.com
首页 > 移动开发 > 详细

iOS学习——UITableView(一)

时间:2015-10-12 14:22:22      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:

  哈哈哈,初次写写博客。来记录记录我学习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,得到如下结果

  技术分享

  

iOS学习——UITableView(一)

标签:

原文地址:http://www.cnblogs.com/zhangguiguang/p/4871353.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!