iOS高级控件之TableView(一)城市信息(1)

首页,我们创建一个新的工程项目,并在storyboard上创建一个tableview的控件,并且右击在上方可以看见letout上有两个选项一个是dataSource数据源,另一个是delegate方法,我们分别点击这个然后将其连接之view Controller
这里写图片描述
然后我们要习惯性的在.h中添加协议

@interface ViewController : UIViewController <UITableViewDataSource,UITableViewDelegate>

接着我们在didviewload中初始化数据,然后再开始设置数据源方法毕竟我们要在tableview中显示的数据就是从数据源中获得的(其中这个数据源,cities.plist & provinces.plist这两个是我之前就创建好的plist文件,类型分别是NSDictionary和NSArray)
这里写图片描述
这里写图片描述

//初始化数据
NSBundle *bundle = [NSBundle mainBundle];
//城市字典
self.cities = [NSDictionary dictionaryWithContentsOfFile:[bundle pathForResource:@"cities" ofType:@"plist"]];
//省份数组
self.provinces =[NSArray arrayWithContentsOfFile:[bundle pathForResource:@"provinces" ofType:@"plist"]];

接着就是写数据源方法

#pragma mark 数据源方法
#pragma mark 省份数量 section
-(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView
{
    return self.provinces.count;
}
#pragma mark 每个城市数量
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    //1.获取对应的省名称
    NSString *pName = self.provinces[section];
    //2.从字典中获取该省的城市数组
    NSArray *cities = self.cities[pName];

    //3.返回城市数组数量
    return cities.count;

}
#pragma mark 表格单元显示内容
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];

    //1.获取省份名称
    NSString *pname = self.provinces[indexPath.section];
    //2.从字典中获取省份中的城市数组
    NSArray *cities = self.cities[pname];
    //3.用城市数组中对应的行数设置单元格内容
    [cell.textLabel setText:cities[indexPath.row]];

    return  cell;

}

同时为了日后相关功能实现,比如点击某个单元格,会发生点啥,那么就需要添加代理方法来实现

#pragma  mark 表格代理方法
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    //1.获取省份名称
    NSString *pname = self.provinces[indexPath.section];
    //2.根据省的名称获取城市数组
    NSArray *cities = self.cities[pname];
    //3.从城市数组中获取相应的的城市名称
    NSString *cityName = cities[indexPath.row];
    //4.输出用户选择
    NSLog(@"%@ ~ %@",pname,cityName);

}```


同时为了方便用户,再右侧通常有一个索引,也很简单

pragma mark 右侧索引方法

-(NSArray ) sectionIndexTitlesForTableView:(UITableView )tableView
{
return self.provinces;
}
“`
现在效果就如图所示,用户可以点击右侧索引进行查找省份信息了

这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值