UITableView:创建带索引的二级列表

本文详细介绍了如何在iOS应用中使用plist文件创建带索引的二级列表,包括国家和武将信息的加载、展示及索引列表的实现,适合iOS开发人员学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

UITableView 创建带索引的二级列表:

本例所创建的二级列表信息为:

第一级:国家(魏国,蜀国,吴国)-kingdoms;

第二级:武将(各个国家的主要武将)-heros;

ps:国家&武将信息量较大,创建两个plist文件分别用于储存国家信息(NSArray)和武将信息(NSDictionary),然后再代码中将plist信息加载到对应的数组/字典;

主要代码如下:

ViewController.h文件:

#import <UIKit/UIKit.h>
 
@interface ViewController : UIViewController<UITableViewDataSource>
 
@property(nonatomic, strong)NSArray *kingdoms;      //  国家
@property(nonatomic, strong)NSDictionary *heros;     //  武将
 
@end

  ViewController.m文件:

#import "ViewController.h"
 
@implementation ViewController
 
@synthesize kingdoms,heros;
 
- (void)viewDidLoad
{
    [super viewDidLoad];
     
    NSBundle *bundle = [NSBundle mainBundle];
    // 加载数据
    self.kingdoms = [NSArray arrayWithContentsOfFile:[bundle pathForResource:@"kingdoms" ofType:@"plist"]];
    self.heros = [NSDictionary dictionaryWithContentsOfFile:[bundle pathForResource:@"heros" ofType:@"plist"]];
}
 
//  返回第一级列表item数量
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return kingdoms.count;
}
 
//  返回第一级列表对应item的值
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    return kingdoms[section];
}
 
//  返回第二级列表item数量
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    NSString *kingdom = kingdoms[section];
    NSArray *iHeros = heros[kingdom];
     
    return iHeros.count;
}
 
//  //  返回第二级列表对应item的值
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
{
    UITableViewCell *cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
     
    NSString *kingdom = kingdoms[indexPath.section];
    NSArray *iHeros = heros[kingdom];
 
    cell.textLabel.text = [iHeros objectAtIndex:indexPath.row];
    return cell;
}
 
//  在列表右部显示索引列表的方法
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
    return kingdoms;
}
 
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    [kingdoms release],kingdoms = nil;
    [heros release],heros = nil;
}
 
@end

 模拟器运行效果(3.5寸屏):

转载于:https://www.cnblogs.com/fizix100/p/3678757.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值