IOS中Table View控件练习

之前两篇博客简单学习了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

时间: 2024-10-25 18:49:49

IOS中Table View控件练习的相关文章

?关于ios中的点赞控件效果的实现--UIControl

关于ios中的点赞控件效果的实现--UIControl 在开发当中,可能很多时候都需要做个点赞的需求,如果用按钮实现,按钮作为一个系统复合控件,外部是一个 View-->UIControl的容器, 内部包含了UILabel和UIImage,以及一些排版规则.用UIButton就很难去做一些在"赞"和"取消赞"切换时的效果. 可是我们又很需要UIButton似的事件响应机制. 怎么办? 对! 就是使用UIControl. UIControl在这里有两个突出的优势

iOS中的分段控件(UISegmentedControl)和滑块控件(UISlider)

#import "RootViewController.h" @interface RootViewController () @end @implementation RootViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. //分段控件 //1.创建控件 /* NSArray *items = @[@"轻拍

IOS中xcode6以上控件布局适配,两控件的距离,控件占百分比

1.控件的适配 让下面的view(绿色部分)模拟器,这就需要做一下人为的约束(constraints) 1.首先做一个顶端约束,选中view(一定要选中要需要调整的控件)——Editor——Pin——Top Space to Superview 2.接下来将Contant值设为为0,意思是view这个控件与模拟器顶端距离为0,设置为0了之后,左侧视图并不会发生变化,这个约束会在编译时起作用,开发中并不会实时响应 接下来依次添加左侧约束(Leading Space to Superview).右侧

iOS中的分页控件(UIPageControl)

#import "RootViewController.h" @interface RootViewController () @end @implementation RootViewController - (void)viewDidLoad { [super viewDidLoad]; /** * UIPageControl 分页控件,提供以下几个功能: 1.展示当前总页数 2.展示当前是第几页 3.切换pageControl的当前显示的点对应显示不同的界面 */ //1.创建控

iOS中的UILabel控件

UILabel也是相当常用的控件,主要是用来显示一段文字的,因此常用方法也是对控件内文字的一些设置. 1 //文本标签 2 UILabel *label = [[UILabel alloc]init]; 3 label.frame = CGRectMake(10, 100, 355, 300); 4 label.backgroundColor = [UIColor yellowColor]; 5 //文本 6 label.text = @"Hello.iOSghuirhgoireghoieugh

ios中VRGCalendarView日历控件

http://pan.baidu.com/share/link?shareid=4166002480&uk=923776187 官网 https://github.com/TjeerdVurig/Vurig-Calendar #import <UIKit/UIKit.h> #import "VRGCalendarView.h" @interface ViewController : UIViewController<VRGCalendarViewDelegat

iOS开发UI篇—使用picker View控件完成一个简单的选餐应用 - 文顶顶

原文  http://www.cnblogs.com/wendingding/p/3771047.html iOS开发UI篇—使用picker View控件完成一个简单的选餐应用 一.实现效果 说明: 点击随机按钮,能够自动选取,下方数据自动刷新. 二.实现思路 1.picker view的有默认高度为162,不可修改. 2.显示数据,需要设置数据源,也有两种方式(成为数据源,遵守协议) 3.实现数据源里面的两个方法 1)返回一共有多少列 2)在这一列中一共有多少行 4.通过代理告诉它那一列的哪

关于xib中添加collection view 控件引起brash

首先这个问题我没有找到解决的办法,不知道问题出现在哪里,所以在这里贴个博文,看看有大神路过能把问题给解决了. 问题描述: 首先建立了一个新的项目,在stroyboard中添加collection view 控件,遵循其中 UICollectionViewDelegateFlowLayout,UICollectionViewDelegate,UICollectionViewDataSource协议,完成collection view 的显示,都很正常,一切OK,然后我添加一个viewcontrol

IOS之导航栏中添加UITextView控件bug

今天遇到一个奇怪的问题,如下: 在导航栏控制器的rootviewcontroller中,添加了一个UITextView控件,代码如下: - (void)viewDidLoad { [super viewDidLoad]; self.title =@"Test"; UITextView *textview = [[UITextViewalloc]init]; textview.frame = CGRectMake(10, 100, 300, 200); textview.backgrou