【iOS】表视图

iOS的表视图并不简单,它是需要修改.h中加两个委托进去,同时在.m文件实现一系列固定的函数,才能完成表视图的创建。一切犹如当初点击空白处关闭键盘需要一段代码才能实现一样,表视图的创建也不像安卓一样是理所当然。我曾天真的认为安卓一个java一个xml,然后还要用适配器添加数据到ListView已经够烦了,没想到iOS搞个表视图更烦。不过也罢了,下次需要就直接来个代码的复制粘贴了。

用一个例子来说明这个问题:


列表视图中,记载了一系列的广东城市,然后点击一个会弹窗,将点击的内容显示出来。以下是制作过程:

1、拖入一个Table View而不是Table View Controller注意。然后Prototype Cells设置为0,之后对于Table View按着Ctrl向View Controller拉线,做两次这样的动作,将dataSource和delegate都选上。意思这个View Controller对应的两个ViewController.h与ViewController.m将完成数据源提供与表视图初始化的工作。


2、直接将ViewController.h修改如下,在其集成类中加入<UITabBarDelegate,UITableViewDataSource>,同时定义一个名为listData的数组。

//
//  ViewController.h
//  TableView
//
//  Created by pc on 17-6-1.
//  Copyright (c) 2017年 pc. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController<UITabBarDelegate,UITableViewDataSource>

@property(nonatomic,retain) NSArray *listData;

@end
3、之后将ViewController.m修改成如下代码,完工。

//
//  ViewController.m
//  TableView
//
//  Created by pc on 17-6-1.
//  Copyright (c) 2017年 pc. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

@synthesize listData;//对listData设置getter、setter,也就是开个接口,从此可以对其进行操作

- (void)viewDidLoad//程序初始化必须要执行的函数
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    NSArray *array=[[NSArray alloc]initWithObjects:@"广州",@"深圳",@"梅州",@"东莞",@"潮汕",@"肇庆",@"四会",@"佛山",@"湛江",@"江门",@"阳江",@"珠海", nil];//定义你自己喜欢的数组
    self.listData=array;//将array塞给在头文件定义的listData
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

//表视图必须要有的初始化函数之一,总行数初始化
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [self.listData count];//这个很简单,就是listData的长度,直接返回即可。
}

//表视图必须要有的初始化函数之一,每一行的初始化
static NSString *TableIdentifier=@"TableIdentifier";//表格的标识,必须要有,虽然没什么卵用
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:TableIdentifier];//所谓的“单元格”,也就是每一行的指针
    if(cell==nil){//如果还有行没创建,那就继续创建
        cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:TableIdentifier];
    }
    cell.textLabel.text=[listData objectAtIndex:[indexPath row]];//表的每一行,就是listData的内容
    [tableView setScrollEnabled:YES];//iOS默认这个表视图是不能滚动的,真不知道想什么的,要设置成滚动才能滚动
    return cell;
}

//表视图选择性的初始化函数之一,每一行被点击之后所发生的事件
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];//拿到被点击单元格的指针
    /*弹窗*/
    UIAlertView *uiAlertView=[[UIAlertView alloc]initWithTitle:@"你点击的是" message:cell.textLabel.text delegate:nil cancelButtonTitle:@"确定!" otherButtonTitles:nil];
    [uiAlertView show];
}

@end
上述代码的2个初始化函数是必须要有的,也不知道为什么,也没法解释为什么,iOS就是这样对我们开发者要求的。我们下次用只要改改*array的内容就好。

之后表的点击响应函数可以没有,不过一般都会写上的,需要做什么,各位根据自己的需要改改里面的内容即可。

可以看到iOS的表视图,你不知道这样的公式,你根本就不知道怎么玩-_-!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值