IOS第二十天——实现一个简单的表

昨天我们学习了一下如何做一个登录,咳咳,登录这个是假的,但也是一个进步,那么接下来我们会学习一下关于表格(UITableView)的创建,表格是用于显示数据列表的,在iPhone中,表格只提供一列多行的形式,当然开发者也可以自定义表格来显示多行多列。

那么我们来尝试着实现一个简单的表,通过这个示例来了解表视图的工作原理。

1. 在Xcode中创建一个新项目,选择“Master-Detail Application”,取名为“MyTableView",点击Create,完成创建项目。

2. 展开项目源文件列表,MyTableView,我们可以看到有如下的文件:


3. 如果不做任何更改,直接运行的话,我们回看到一个空白的表格:(ps:我们并不是要空白的表格)


4. 我们一点一点来改变这个,往空白的表格中写如一些数据。打开"ECMasterViewController.h",添加以下代码:

- (void)viewDidLoad
{
    [super viewDidLoad];
    //给数组赋值
    NSArray *array=[[NSArray alloc] initWithObjects:@"Abc",@"Def",@"Ghi",@"JK",@"LM", nil];
    self->dataArray=array;
}

上述代码中,UITableViewDelegate和UITableViewDataSource这两个是我们的类遵守的协议,来充当表视图的委托和数据源,然后我们声明了一个数组,用来存放我们要展示的数据。

5. 切换到"ECMasterViewController.m"文件,修改其中代码:(注:我买的这本iPhone应用从开发到入门在现在来看好像已经是有些老了,所以接下来的这些改动,都是根据Xcode版本变化作出的相应调整,具体我会进行描述):

a) 修改视图加载方法:

- (void)viewDidLoad
{
    [super viewDidLoad];
    //给数组赋值
    NSArray *array=[[NSArray alloc] initWithObjects:@"Abc",@"Def",@"Ghi",@"JK",@"LM", nil];
    self->dataArray=array;
}

需要注意的是,我们这里不用直接象书中那样儿直接使用self.dataArray,而是需要使用self->dataArray

b) 添加设备屏幕为竖屏展示的方法:

//设置设备屏幕为竖屏
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
    //return YES for supported orientations.
    return (toInterfaceOrientation==UIInterfaceOrientationPortrait);
}

c) 将表格的行数设置为数组的元素个数:

//设置表格的行数为数组的元素个数
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [self->dataArray count];
}
d) 接下来将数组内容展示在表格的单元格上:

//每一行的内容为数组相应索引的值
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    }
    //设置单元格的字符串内容
    cell.textLabel.text=[self->dataArray objectAtIndex:indexPath.row];
    return cell;
}
这里简单介绍下最后这个方法:

 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
当表格视图需要绘制其中一行的时候,就会调用此方法,那么我们会注意到此方法的第二个参数是一个NSIndexPath实例,表格视图正是使用此机制把分区和行绑定到一个对象中的。要想从NSIndexPath中获得一行或一个分组,只需要调用行方法或者分组方法就可以了。这两个方法都返回一个int值,第一个参数tableView是对发起请求的表的饮用,通过它,我们就可以创建充当多个表的数据源的类。

OK,写到这里,我们来run一下看看实际运行的效果如何:


诶,这个效果确实已经丑的一坨儿了,但原谅我这个感冒了的家伙吧,今天就学到这儿,六七个小时之后再起来学习。

2013年05月04日,Eric.Tang 记

- (void)viewDidLoad
{
    [super viewDidLoad];
    //给数组赋值
    NSArray *array=[[NSArray alloc] initWithObjects:@"Abc",@"Def",@"Ghi",@"JK",@"LM", nil];
    self->dataArray=array;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值