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

IOS中Table View控件练习

时间:2015-10-19 23:53:38      阅读:311      评论:0      收藏:0      [点我收藏+]

标签:

之前两篇博客简单学习了Picker view控件的使用,接下来再学习IOS应用中很重要的一个视图--表视图。

在表视图中,每个表视图都是UITableView的一个实例,每个可见行都是UITableViewCell的一个实例。

表视图有两种基本格式,分组的表和普通表,普通表可以实现索引,实现了索引的表成为索引表。(PS.技术上,分组表也可以实现索引,不过好像苹果的设计规范中不支持)

 

一个简单的表视图应用

界面设计:

向storyboard中拖一个table view控件,他会自动占满屏幕,至于约束,可以自己创建,记得设置tableview的tag为1,后面会用到。

table view的outlets中会有dataSource和delegate两个设置项,按住每个设置项后面的空心圆,拖向storyboard中的controller按钮,完成关联。

代码讲解:

首先要在对应控制器的.h文件中实现UITableViewDataSource和UITableViewDelegate两个协议。

在.m文件中首先定义一个nsarray类型的属性,这个属性用来存放tableview要显示的数据,并且在viewDidLoad方法中给nsarray赋值。

在viewDidLoad方法中还需要做的是把tableview的顶部向下偏移一定数量来美化界面(算不得美化,如果不做这一步处理,tableview顶部会紧挨着状态栏,很难看<( ̄▽ ̄)> 哇哈哈…)

    UITableView* tableView = (id)[self.view viewWithTag:1];//通过tag获取控件
    UIEdgeInsets contentInset = tableView.contentInset;
    contentInset.top = 20;
    [tableView setContentInset:contentInset];

然后实现两个委托方法,一个是- (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section,返回这个table的行数,

另一个是- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath,这个方法会返回指定行的TableViewCell。

首先看看这个方法的参数,第一个参数是一个tableview,表示触发这个方法的table。第二个参数是NSIndexPath类型的值,这个类型有两个主要的属性,section和row,组和行。

创建一个UITableViewCell对象,此处使用的dequeueReusableCellWithIdentifier:方法,这个方法会返回一个可以重用的cell,也有可能返回nil

所以我们要判断返回值,如果返回值为nil,就需要实例化一个cell

有了cell,就能设置cell要显示的文本

cell.textLabel.text = self.dwarves[indexPath.row];

完整代码:

技术分享
 1 //
 2 //  ViewController.m
 3 //  Simple Table
 4 //
 5 //  Created by 张光发 on 15/10/19.
 6 //  Copyright (c) 2015年 张光发. All rights reserved.
 7 //
 8 
 9 #import "ViewController.h"
10 
11 @interface ViewController ()
12 @property (strong, nonatomic) NSArray* dwarves;
13 @end
14 
15 @implementation ViewController
16 
17 - (void)viewDidLoad
18 {
19     [super viewDidLoad];
20     self.dwarves = @[ @"Sleepy", @"Sneezy", @"Bashful", @"Happy", @"Doc", @"Grumpy", @"Dopey", @"Thorin", @"Dorin", @"Nori", @"Ori", @"Balin", @"Dwalin", @"Fili", @"Kili", @"Oin", @"Gloin", @"Bifur", @"Bofur", @"Bombur" ];
21     UITableView* tableView = (id)[self.view viewWithTag:1];
22     UIEdgeInsets contentInset = tableView.contentInset;
23     contentInset.top = 20;
24     [tableView setContentInset:contentInset];
25 }
26 
27 - (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section
28 {
29     return [self.dwarves count];
30 }
31 
32 - (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath
33 {
34     static NSString* SimpleTableIndetifier = @"SimpleTableIdentfier";
35     UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:SimpleTableIndetifier];
36     if (cell == nil) {
37         cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:SimpleTableIndetifier];
38     }
39     cell.textLabel.text = self.dwarves[indexPath.row];
40     return cell;
41 }
42 
43 @end
View Code

 

IOS中Table View控件练习

标签:

原文地址:http://www.cnblogs.com/oooo0/p/4893394.html

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